JS的undefined表示什么,与not defined什么不同
Admin 2022-11-15 群英技术资讯 879 次浏览
概念上的解释:
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;(不同的浏览器可能说法不同)
不解释,直接上代码:
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();
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
方法:1、使用“for (var i=1;i<=n;i++){}”语句控制循环遍历范围为“1~n”;2、循环体中,使用“sum=sum+i;”语句将1到n的数相加,和值赋值给变量sum;3、循环结束后,变量sum的值就1到n的和,输出即可。
这篇文章我们来了解jQuery去除input值空格的方法,这里使用到两个方法,val()方法和trim()方法,下文有具体的实现代码,对大家学习这两种方法的使用及去除input值空格都有帮助,有需要的朋友可以参考,接下来就跟随小编来一起学习一下吧!
1.根据端口号,查询进程信息命令:netstat-aon|findstr"端口号"2.根据pid杀死进程命令:taskkill/F/pid进程号 完整代码:constwindowsServiceStop=function(port){letnetstat_command='netstat-aon|findstr\":'+po
这篇文章主要介绍了Javascript闭包的使用场景, 由于在Javascript语言中,只有函数内部的子函数才能读取局部变量,闭包就是能够读取其他函数内部变量的函数。所以,在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁,下面一起进入文化在哪个了解文章内容
JS实现数组倒序排列的方法是什么?在JavaScript中,我们能用reverse() 方法来实现元素倒序排列,一些新手可能对于reverse() 方法的使用不是很了解,下面我们就来看看reverse() 是如何实现颠倒数组中元素的顺序的。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008