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.

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容