课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
JavaScript编程开发语言是大多数前端开发程序员都必须去学习和熟练运用的编程语言之一,而今天我们就一起来了解一下,JavaScript编程数据类型与判断方法。
Undefined
undefined一般表示我们未对变量进行初始化。使用typeof操作符的时候,如果是未声明变量,同样也会返回undefined,再比如未设置返回值的函数执行的结果是undefined,未设置的参数也会被默认为undefined。后还有一点需要注意的是,undefined并不是js的保留字,并且是全局对象的一个属性,在浏览器环境中就是window.undefined。当在局部环境中,我们是可以自己给undefined属性赋值的,也就是重写undefined,所以为了确保我们使用的undefined是未被重写的,我们可以使用void0来代替。
Null
null可以简单理解为一个未被创建的对象,比如我们使用document.getElementById并没有找到对应元素的时候就会返回null。null和undefined有一些区别,在转换为Number的时候,null会转换为0而undefined会转换为NaN,执行typeof运算的时候,undefined返回undefined而null返回object。使用==判断两者相等会返回true,所以为了防止误判一般我们使用全等===。null是所有对象原型链的终点,Object.prototype.__proto__===null。
关于null的使用,当我们声明一个变量是用来存储对象我们可以先赋值为null,当一个对象不再需要的时候,我们可以设置为null解除这个引用。
Symbol和BigInt
这两个都是ES6新增的原始数据类型,Symbol类型的数据通过Symbol()方法的执行产生,不过需要注意的是Symbol不能作为构造函数,每个从Symbol()返回的symbol值都是的。一个symbol值能作为对象属性的标识符;这是该数据类型仅有的目的。
而BigInt则是为了精确表示超出双精度浮点数的大安全表示范围的大数而新增的基本数据类型。
判断数据类型的方法
typeof运算符
简单的判断数据类型的方法是typeof运算符,返回值为字符串。typeof的缺点是除了Function以外的其他所有对象的返回值都是object(null的返回值也是object),如果我们需要区分不同的对象,就无法使用typeof。
instanceof运算符
instanceof运算符是检测构造函数的原型是否出现在某个对象的原型链上。通过instanceof运算符我们可以实现对Object类型的细分,确定属于哪种对象。但是instanceof的缺点是只能对对象进行检测,对于基本数据类型的实例无法检测(字面量无法检测,但是通过基本包装类型的构造函数创建的基本类型可以进行检测)。
constructor属性
利用实例的constructor属性来辅助判断实例的数据类型也是一种手段。一般来说,实例本身是没有constructor属性的,我们所看到的属性都是实例.__proto__.constructor,换言之也就是实例的构造函数,这种方式对基本数据类型也是有效的。这种方法的一个比较大的问题是constructor属性是个不受保护的属性,随时可能被更改,我们既可以给实例增加constructor属性,也可以修改构造函数的prototype的引用,也可以直接修改原型的constructor属性。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请在707945861群中学习了解。