源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Javascript中判断一个值是否为undefined的方法详解

  • 时间:2021-01-18 14:30 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Javascript中判断一个值是否为undefined的方法详解
[b]前言[/b] 相信大家都知道当声明一个变量,并且没有给赋值的情况下,它的初始值是undefined。但是在javascript中,怎么检查一个值是否为undefined呢? [b]简单来说,在现代浏览器中,你可以安全的比较变量是否为undefined[/b]
if (name === undefined) {...}
一些人反对直接使用undefined变量进行比较,因为在旧的浏览器中允许它的值被重新赋值,比如下面这样:
undefined = "test"
在被重新赋值后,使用undefined指令将不能正确的检测一个变量是否被赋值。 不过,这个行为在2009年的ECMAScript 5被修复了。
15.1.1.3 undefined
The value of undefined is undefined (see 8.1). This property has the attributes { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false }.
在现代浏览器中,undefined的值将不能被重写 [b]我们需要支持IE8或者更古老的浏览器怎么办[/b] 通常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!");
};
下面一行,“它可以被重新赋值”,[code]raw === undefined[/code]返回false 如果你仍然很在意,有两个方法可以检查一个值是否为undefined,即使全局[code]window.undefined[/code]已经被重写
if (name === void(0)) {...}
在这个例子中0没有任何实际意义,你想要使用 [code]1 or function(){}[/code]也无所谓。 [code]void(anything)[/code]都会计算得到undefiend 另外一种选择,你可以使用typeof操作符安全地检查是否已经被赋值。你可以检查一个值的类型是否为”undefined”代替与全局的undefined比较.
if (typeof name === "undefined") {...}
注意第二个选择与前一个方案稍微有点差异.尽管name没有被声明,typeof会返回他是undefined。如果你直接使用name与[code]undefinedor void(0)[/code]你会得到[code]ReferenceError[/code]异常的错误. [b]但是不要使用VOID(0)指令[/b] 在代码中避免使用void(0)或者 [code]typeof x === "undefined" [/code],你可以使用[code]isUndefined function[/code]方法把他们包起来,这样你使用的时候就不用再特意说明了.
function isUndefined(value){
  //获得undefined,保证它没有被重新赋值
  var undefined = void(0);
  return value === undefined;
}
一些工具库已经部署了这个方法,例如:[code] _.isUndefined[/code],[code]underscore[/code]中的[code]isUndefined[/code]方法 [b]总结[/b] 以上就是这篇文章的全部内容了,希望能对大家的学习或者工作带来一定的帮助,如果有疑问大家可以留言交流。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部