标签:font 就是 cti ring lse 自定义 def 操作符 对象引用
数据类型概述
undefined、Null、Boolean、Number 、String、function、Object(复杂数据类型)
javaScript 不支持任何创建自定义类型的机制,所有值都成为以上 6 中数据类型之一
undefined类型
Undefined 类型只有一个值,即特殊的 undefined。
在使用 var 或者let声明变量,但没有对其初始化时,这个变量的值就是 undefined。我们在定义变量的时候,尽可能的不要只声明,不赋值。
没有必要显式的给一个变量赋值为 undefined,因为没有赋值的变量会隐式的 (自动的)赋值为 undefined
ECMAScript 第 3 版之前并没有引入这个值,引入之后为了正式区分空对象与未经初始化的变量。
var s alert(s) // undefined
未初始化的变量与根本不存在的变量(未声明的变量)也是不一样的。
var s alert(s) // undefined // alert(a) // 报错:a is not defined // 使用typeof 判断一个未初始化的变量和未定义的变量返回都是undefined,从逻辑上思考,他们的值,一个是 undefined,一个报错;他们的类型,却都是 undefined alert(typeof s) alert(typeof a)
Null 类型是一个只有一个值的数据类型,即特殊的值 null。
它表示一个空对象引用(指针),而 typeof 操作符检测 null 会返回 object。
var s = null alert(typeof s) //object
如果定义的变量准备在将来用于保存对象,那么最好将该变量初始化为 null。这样,当检查 null 值就知道是否已经变量是否已经分配了对象引用了。
var s = null if (s !== null) { alert(‘对象存在‘) }
注意:undefined 是派生自 null 的,因此 ECMA-262 规定对它们的相等性测试返回 true。
由于 undefined 和 null 两个值的比较是相等的,所以,未初始化的变量和赋值为 null 的变量会相等。这时,可以采用 typeof 变量的类型进行比较。但建议还是养成编码的规范,不要忘记初始化变量。
var s = null var a alert(a == s) // true alert(a === s) // false alert(typeof a === typeof s) // false alert(undefined == null) // true alert(undefined === null) //fasle,三个等于号比较的是数据类型
标签:font 就是 cti ring lse 自定义 def 操作符 对象引用
原文地址:https://www.cnblogs.com/LO-ME/p/10657834.html