undefined和undeclared的区别

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.

你可能感兴趣的:(undefined和undeclared的区别)