JS的undefined表示什么,与not defined什么不同

Admin 2022-11-15 群英技术资讯 401 次浏览

这篇文章给大家分享的是“JS的undefined表示什么,与not defined什么不同”,对大家学习和理解有一定的参考价值和帮助,有这方面学习需要的朋友,接下来就跟随小编一起学习一下吧。


Javascript中undefined和not defined有什么区别?

概念上的解释:

undefined是javascript语言中定义的五个原始类中的一个,换句话说,undefined并不是程序报错,而是程序允许的一个值。

not defined是javascript在运行我们的javascript代码时,遇到没有定义就用来运算的变量时爆出来的错误。

那么问题来了:在许多的javascript教程中都介绍有javascript变量即使不定义也可以直接拿来使用,但是请注意,这个使用是指可以被赋值,但是不可以被运算。看一个例子

var temp;
temp2 = 123;
alert(temp2);
temp3 = temp4+1;
alert(temp3);

在上面的代码中,第一个alert可以正常弹窗为123;但是第二个alert是不会执行的,因为使用了没有定义的temp4来运算,这是不允许的。

接下来再看一个例子:

var temp;
alert(temp);
alert(typeof temp);
alert(typeof temp2);
alert(temp==undefined);
alert(temp2==undefined);

在这个示例中:

第一个、第二个和第三个alert可以弹出提示undefined;但其实这三个undefined的含义是不一样的。在javascript中,undefined是一个类,这个类只有一个值就是undefined,第一个alert弹出的就是值undefined,第二个和第三个弹出的是undefined这个类名。

第四个alert会弹出true,这是一个判断。

第五个alert不会弹出,因为报错了。这里爆出的错误就是因为使用了没有定义的变量进行运算。爆出的错误是temp2 is not defined;(不同的浏览器可能说法不同)

JavaScript中undefined和is not defined异常

不解释,直接上代码:

console.log(xx);
console.log(window.xx);

(其中xx是一个不存在的变量)

当直接打印xx变量时,直接抛出一个is not defined异常并终止执行。

然而将xx变量以window.xx的形式打印出来时,缺直接输出一个undefined,并没有出现异常,可以继续执行。

查阅相关文档之后才知道,打印undefined说明该变量已经声明,但没有赋值;打印is not defined异常说明该变量连声明都没有。通过这条结论说明,window.xx的形式会在window对象中隐式的声明该变量。

这也说明了,为什么以下代码可以直接运行了。

window.xx = 2;
console.log(window.xx);

另外有个一个相关的问题,见代码:

function t1() {
    console.log(str2);  //undefined
    var str2 = 'mike';
}
t1();
和
function t1() {
    console.log(str2);  //is not defined
    str2 = 'mike';
}
t1();

第一种情况涉及到JavaScript的运行阶段,分为词法分析阶段和运行阶段,在词法分析阶段时,先声明了str2变量但没有赋值,所以在运行阶段就出现了undefined。

第二种情况在词法分析阶段也无法声明str2,因为没有var关键字声明,所以在运行阶段直接抛出异常。

还有一点需要注意的是,凡是没有使用var声明的变量,最终都会成为全局对象window的属性,如下代码:

function t1() {
    a = 10
    console.log(a);//10
    console.log(window.a);//10
}
t1();

总结



“JS的undefined表示什么,与not defined什么不同”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业技术相关的知识可以关注群英网络网站,小编每天都会为大家更新不同的知识。 群英智防CDN,智能加速解决方案
标签: undefined

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

猜你喜欢

成为群英会员,开启智能安全云计算之旅

立即注册
专业资深工程师驻守
7X24小时快速响应
一站式无忧技术支持
免费备案服务
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
在线客服
微信公众号
返回顶部
返回顶部 返回顶部
在线客服
在线客服