undefined是Javascript中的语言类型之一,而undeclared是Javascript中的一种语法错误。
JS中的undefined可以表示“空”,另一个可以表示“空”的为null。JS中的undefined是一个值为undefined的类型。
undefined: 已申明,未赋值。
尝试访问一个undefined 的变量时,浏览器不会报错并会返回undefined。
undeclared: 未声明,未赋值。
尝试访问一个undeclared的变量时,浏览器会报错,JS执行会中断。
直接上码:
当我们申明一个变量:
var foo; //此时foo的值就是undefined
而如下代码却也可以在浏览器里无错执行:
b = “foo" ; //
alert(window.b); // 输出"foo"
源于JS的语言解析特性,当变量没有使用var显式声明并且在使用前已经赋值,存储这个值的变量会被隐性声明为全局变量。因此b现在变成了window对象的一个属性,所以访问它并不会报错。
所以,当我们尝试执行如下代码时:
alert(a);
将会输出Uncaught ReferenceError: a is not defined.
网友评论