说起null跟undefined,相信很多人既熟悉,又迷惑。
null是一个特殊值,常用来描述“空值”,它可以表示数字,字符串和对象是“无值”的,对null执行typeof会得到“object”。
undefined是变量的一种取值,表明变量没有初始化,对undefined执行typeof会得到“undefined”。
因为二者都是表示“值的空缺”,所以判断相等运算符“==”认为二者是相等的,结果为true,需要用“===”将二者区分,此时返回false。
在下面场景中应当使用null:
1.用来初始化一个变量,这个变量可能赋值为一个对象;
2.用来和一个已经初始化的变量比较,这个变量可以是也可以不是一个对象;
3.当函数的参数期望是对象时,用作参数传入;
4.当函数的返回值期望是对象时,用作返回值传出。
在下面的场景中不应当用null:
1.不要使用null来检测是否传入了某个参数;
2.不要用null来检测一个未初始化的变量。
理解null最好的方式是把它当作对象的占位符。
那些没有被初始化的变量都有一个初始值,即“undefined”,表示这个变量等待被赋值。
所以好的做法是给变量赋一个初始值,这样就可以有效的确保只有在一种情况下typeof才会返回“undefined”:当变量未声明时。