时间:2021-05-26
前言
相信大家都知道当声明一个变量,并且没有给赋值的情况下,它的初始值是undefined。但是在javascript中,怎么检查一个值是否为undefined呢?
简单来说,在现代浏览器中,你可以安全的比较变量是否为undefined
一些人反对直接使用undefined变量进行比较,因为在旧的浏览器中允许它的值被重新赋值,比如下面这样:
undefined = "test"在被重新赋值后,使用undefined指令将不能正确的检测一个变量是否被赋值。
不过,这个行为在2009年的ECMAScript 5被修复了。
15.1.1.3 undefinedThe value of undefined is undefined (see 8.1). This property has the attributes { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false }.在现代浏览器中,undefined的值将不能被重写
我们需要支持IE8或者更古老的浏览器怎么办
通常undefined指令是安全的。在应用中并没有什么理由需要修改undefined的值。
Thomas的回答使用具有说服力的推理,论证了这一点。
I don't hear people telling me that I shouldn't use setTimeout because someone can我不听别人告诉我,我不应该使用setTimeout,因为有的人像这样用:window.setTimeout = function () { alert("Got you now!");};下面一行,“它可以被重新赋值”,raw === undefined返回false
如果你仍然很在意,有两个方法可以检查一个值是否为undefined,即使全局window.undefined已经被重写
if (name === void(0)) {...}在这个例子中0没有任何实际意义,你想要使用 1 or function(){}也无所谓。 void(anything)都会计算得到undefiend
另外一种选择,你可以使用typeof操作符安全地检查是否已经被赋值。你可以检查一个值的类型是否为”undefined”代替与全局的undefined比较.
if (typeof name === "undefined") {...}注意第二个选择与前一个方案稍微有点差异.尽管name没有被声明,typeof会返回他是undefined。如果你直接使用name与undefinedor void(0)你会得到ReferenceError异常的错误.
但是不要使用VOID(0)指令
在代码中避免使用void(0)或者 typeof x === "undefined" ,你可以使用isUndefined function方法把他们包起来,这样你使用的时候就不用再特意说明了.
function isUndefined(value){ //获得undefined,保证它没有被重新赋值 var undefined = void(0); return value === undefined;}一些工具库已经部署了这个方法,例如: _.isUndefined,underscore中的isUndefined方法
总结
以上就是这篇文章的全部内容了,希望能对大家的学习或者工作带来一定的帮助,如果有疑问大家可以留言交流。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Undefined未定义。只有一个值undefinedNull只有一个值,nullBoolean在javascript中,只要逻辑表达式不返回undefined
本文实例讲述了javascript判断变量是否有值的方法。分享给大家供大家参考。具体分析如下:例如:vara=null;varb=undefined;以上这两种
javascript中判断变量是否为数字的方法,这里主要介绍javascript里的isNaN()函数。功能:isNaN()函数用于检查其参数是否是非数字值。语
js判断字符是否为空的方法://判断字符是否为空的方法functionisEmpty(obj){if(typeofobj=="undefined"||obj
判断是否为undefined或nullconstisDef=(v)=>{returnv!==undefined&&v!==null}判断是否为Promise函数