null和undefined的区别
这两个空值的区别也是容易混淆的。
undefined和null对象无非是两个特殊对象,undefined表示无效对象,null表示空对象。如果变量显式或者隐式(由Javascript引擎进行赋值)地被赋予了undefined,那么代表了此变量未被定义,如果被赋予null值,则代表此变量被初始化为空值。
在Javascript中,变量是通过var声明,=赋值符进行定义(初始化变量所指向的对象)。当然,如果声明一个全局变量(作为window属性)可以不使用var关键字。变量可以在声明的同时进行定义。from:eduyo.com 站长教学网
<scripttype="text/javascript"> var undefinedVariable,nullVariable = null; alert(undefinedVariable); // "undefined" alert(window.undefinedVariable); // "undefined" alert(window.abcd); // "undefined" alert(nullVariable); // "null" alert(abcd); // throw exception "abcd is not defined" </script>
其实, 变量如果声明了但是没有初始化,那么Javascript引擎会将此变量自动指向undefined对象。
这里需要注意,我们在上面引用window.abcd时,弹出的是undefined;而直接引用abcd变量时,却抛出了一个异常。这是由于Javascript引擎对于没有显式指定对象链的变量,会尝试从最近的作用域开始查找变量,查找失败,则退到父级作用链进行查找。如果均查找失败,则抛出"变量未定义"的异常。
这两个值在进行数字运算的时候也有不同。
<scripttype="text/javascript"> alert(1+undefined); // "NaN" alert(1+null); // "1" </script>
从null和undefined的意义上来说,这是很好理解的。
(责任编辑:ken)