资讯专栏INFORMATION COLUMN

js判断数据类型

GitChat / 1980人阅读

摘要:中的数据类型变量包含两种不同的数据类型的值基本类型值和引用类型值。对于引用类型返回均为使用检测引用型数据类型时的最佳选择是因为根据规定,所用引用类型的值都是的实例,因此都是返回引用类型与基本包装类型的主要区别就是对象的生存期。

javaScript中的数据类型

ECMAScript 变量包含两种不同的数据类型的值:基本类型值和引用类型值 。 基本数据类型指的是简单的数据段,而引用数据类型指那些可能有多个值组成的对

基本类型(值类型)

Undefined 在使用var声明变量但未对其初始化时,或者使用了一个并未声明的变量时,又或者使用了一个并不存在的对象属性时,这个变量的值就是undefined。

Null 从逻辑上看,null值表示一个空对象指针,独一无二。

Boolean true、false

Number NaN,即非数值(Not a Number)是一个特殊的数值,这个数值用于表示一个本来要返回数值的操作数未返回数值的情况(这样就不会抛出错误了)

String 字符串可以由"" 或 "" 表示。 ES中字符串是不可改变的,也就是说,字符串一旦创建,它们的值就不能改变。要改变某个变量保存的字符串,首先要销毁原来的字符串,然后再用另一个包含新值的字符串填充该变量。

​ 这五种基本数据类型是按值访问的,因为可以操作保存在变量中的实际的值。

复杂类型(引用类型)

Object 对象其实就是一组数据和功能的集合。对象可以通过new操作符后跟要创建的对象类型的名称来创建。 而创建Object的实例并为其添加属性和方法,就可以自定义对象。

Object类型

Array类型

Date类型

RegExp类型

Function类型

​ 引用类型的值是保存在内存中的对象。与其他语言不同,js不允许直接访问内存中的位置,也就是说不能直接操作对象的内存空间。 操作对象时,实际上是在操作对象的引用而不是实际的对象。(这种说法不太严谨,为对象添加属性时,操作的是实际的对象)。

值类型与引用类型的差别

基本类型在内存中占据固定大小的空间,因此被保存在栈内存中

从一个变量向另一个变量复制基本类型的值,复制的是值的副本

引用类型的值是对象,保存在堆内存

包含引用类型值的变量实际上包含的并不是对象本身,而是一个指向该对象的指针

从一个变量向另一个变量复制引用类型的值的时候,复制是引用指针,因此两个变量最终都指向同一个对象

判断数据类型 使用typeof

检测基本数据类型的最佳选择是使用typeof

var bool = true
var num = 1
var str = "abc"
var und = undefined
var nul = null
var arr = [1,2,3]
var obj = {}
var fun = function(){}
var reg = new RegExp()

console.log(typeof bool); //boolean
console.log(typeof num); //number
console.log(typeof str); //string
console.log(typeof und); //undefined
console.log(typeof nul); //object
console.log(typeof arr); //object
console.log(typeof obj); //object
console.log(typeof reg); //object
console.log(typeof fun); //function

由结果可知,除了在检测null时返回 object 和检测function时放回function。对于引用类型返回均为object
使用instanceof

检测引用型数据类型时的最佳选择是instanceof

console.log(reg instanceof Object); //true
console.log(reg instanceof RegExp); //true  因为根据规定,所用引用类型的值都是Object的实例,因此都是返回true

console.log(bool instanceof Boolean);  //false 
var bool2 = new Boolean();
console.log(bool2 instanceof Boolean); //true  引用类型与基本包装类型的主要区别就是对象的生存期。使用new操作符创建的引用类型的实例,在执行流离开当前作用域之前都是一直保存在内存中。而自动创建的基本包装类型的对象,则只存在于一行代码的执行瞬间,然后立即被销毁
console.log(und instanceof Object); // false
console.log(nul instanceof Object); // false  undefined和null没有contructor属性

instanceof它不仅检测构造找个对象的构造器,还检测原型链。所以它可以检测继承而来的属性。
使用constructor
console.log(bool.constructor === Boolean);// true
console.log(num.constructor === Number);// true
console.log(str.constructor === String);// true
console.log(arr.constructor === Array);// true
console.log(obj.constructor === Object);// true
console.log(fun.constructor === Function);// true

undefined和null没有contructor属性
constructor不能判断undefined和null,并且使用它是不安全的,因为contructor的指向是可以改变的 //详情请了解js对象的特性
使用Object.prototype.toString.call
console.log(Object.prototype.toString.call(bool));//[object Boolean]
console.log(Object.prototype.toString.call(num));//[object Number]
console.log(Object.prototype.toString.call(str));//[object String]
console.log(Object.prototype.toString.call(und));//[object Undefined]
console.log(Object.prototype.toString.call(nul));//[object Null]
console.log(Object.prototype.toString.call(arr));//[object Array]
console.log(Object.prototype.toString.call(obj));//[object Object]
console.log(Object.prototype.toString.call(fun));//[object Function]

博客参考

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/106407.html

相关文章

  • js笔记内容

    摘要:定义运算符用来判断一个构造函数的属性所指向的对象是否存在另外一个要检测对象的原型链上,用于引用类型。但其实,实例的来自于构造函数的。 一、关于css 样式优先级: 行内样式>id选择器样式>类选择器样式>标签选择器样式>通配符选择器的样式>继承样式>默认样式 二、关于js 关于问题:**JavaScript中的所有事物都是对象??** 从typeof和instanceo...

    n7then 评论0 收藏0
  • js中对数据类型的总结及判断数据类型的各种方法及优缺点

    摘要:最常见的判断方法它的官方解释操作符返回一个字符串,表示未经计算的操作数的类型。另外,是判断对象是否属于某一类型,而不是获取的对象的类型。多个窗口意味着多个全局环境,不同的全局环境拥有不同的全局对象,从而拥有不同的内置类型构造函数。 js中的数据类型 js中只有六种原始数据类型和一个Object: Boolean Null Undefined Number String Symbol ...

    voyagelab 评论0 收藏0
  • 原生JS大揭秘—数据类型

    摘要:中九个内置对象在规范中定义了六种数据类型其中原始值类型有种,引用类型有种一有包装对象数值型,包括整形和浮点型其中都是类型二有包装对象字符串类型,有两种表示方式,双引号单引号。方法可以将任意类型数据转成字符串。 JS中九个内置对象 showImg(https://segmentfault.com/img/bV6iZG?w=481&h=411); 在ECMAScript规范(ES5)中定义...

    luck 评论0 收藏0
  • 分析 JavaScript 的数据类型与变量

    摘要:基本数据类型在中,基本数据类型有种,即数值字符串布尔值。两个布尔值转为数值进行比较。对于对象和布尔值,调用它们的方法得到对应的字符串值,然后进行字符串相加。减法对于字符串布尔值或者,自动调用,转换结果若为,那么最终结果为。 这篇文章,来聊聊 JS 中的数据类型与变量。这是在学习 JS 时最基础的一类问题,但却很重要。希望我的分享有帮助到你。 文章开头,我先提几个面试中遇到的问题: 比如...

    Mike617 评论0 收藏0
  • JS 中的类型判断

    摘要:和这三种基本的数据类型,都有对应的引用包装类型和。应用于引用类型的判断,所以对于这三类基本类型没有什么意义。 JS 中的类型判断 js中的数据类型 基本数据类型 undefined、number、string、boolean 引用数据类型 null、Object、Number、String、Boolean、Function、Array、Date、RegExp、Error、Argumen...

    ChanceWong 评论0 收藏0
  • js数据类型判断数据类型的方法

    摘要:基本数据类型引用类型判断数据类型的方法判断中的数据类型有一下几种方法接下来主要比较一下这几种方法的异同。通常情况下用判断就可以了,遇到预知类型的情况可以选用或方法实在没辙就使用方法。 基本数据类型:String、Number、Boolean、Symbol、undefined、Null引用类型:Object Array Function 判断数据类型的方法: 判断js中的数据类型有一...

    whidy 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<