标签:属性 初始化 enc script obj 函数 error: bool rip
ECMAScript中包含六种数据类型:
其中,Undefined类型和Null类型是唯二的仅有一个值的数据类型
通过typeof
运算符可能返回如下六种可能的字符串:
"undefined"
"boolean"
"string"
"number"
"object"
"function"
与ECMAScript中定义的六种数据类型比较,可发现如下差异点:
typeof null
并不会返回"null"
。这是因为,特殊值null
被认为是一个空的对象引用,因此会返回"object"
;
返回值中出现了"function"
,而函数并不是ECMAScript中定义的一种数据类型。实质上,在ECMAScript中函数也是对象,但函数确实有其特殊属性,因此区分函数和其他对象是有必要的。
Undefined类型中的唯一值undefined
,表示未初始化的变量;
注意:区分未初始化的变量与尚未定义的变量:
var message;
// var age;
alert(message); // "undefined"
alert(age); // ReferenceError: age is not defined
但是,使用typeof操作符时,会有如下返回:
var message;
// var age;
alert(typeof message); // "undefined"
alert(typeof age); // "undefined"
综上,最佳实践:
每次定义变量时都进行显示初始化,那么当typeof
操作符返回"undefined"
时,只能说明该变量尚未被声明。
null
与undefined
的关系:
alert(null == undefined); // true
因为,实际上undefined
是派生自null
,但之所以区分是强调其各自的特殊指向。
上面说过,null
的特殊意义在于表示空的对象引用(空对象指针),因此建议如下最佳实践:
当一个意在保存对象的变量尚未实际真正保存对象时(刚声明且暂未赋值),都应当明确地让该变量保存null
值:
null
与undefined
来区分暂未赋值而实际意义不同的对象;null
便可判定相应变量是否已保存了一个对象的引用。JavaScript - undefined与null的区分及最佳实践
标签:属性 初始化 enc script obj 函数 error: bool rip
原文地址:https://www.cnblogs.com/JustBeZero/p/9651738.html