javascript - 想了解更多关于 undefined 的信息

标签 javascript undefined

如您所见,undefined 不是 javascript 中的关键字(对吗?)。所以我们可以将它用作变量,但我确定这是个坏主意。现在我的问题是为什么我不能给出未定义的值。

代码:

var undefined=3;

undefined;//still undefined  

如有任何建议,我们将不胜感激。

最佳答案

因为在较旧的环境中(JS 1.8.5 之前),可以更改未定义的值,并且以可能破坏的方式检查不存在的内容。在自己的闭包中开发库是一个常见的选择,使用 IIFE 模式创建一个 undefined variable ,它不会被外部代码(例如 jQuery 和大多数库)触及,这是一个例子:

(function(undefined) {
    //code which safely uses undefined
})();

请注意,有一个名为 undefined 的参数,并且 没有任何参数 调用 IIFE,使 undefined 实际上变为 undefined 。在较新的环境中,无法更改 undefined 的值,但为了向后兼容,它仍被广泛使用。

然而,检查未定义类型的最安全方法是使用 typeof。事实上,它的用法不能以任何方式被覆盖,并且可以安全地使用它:typeof foo == 'undefined'

请记住,undefinedundeclared 之间存在细微差别:

var x; //declared but undefined
x === undefined; //true

但在较旧的环境中你可以这样做

var undefined = 1;
var x; //declared, of type undefined, but...
x === undefined // false, because undefined is 1 and x is of type undefined

正如我之前所说,检查 undefined variable 的最安全方法(确保它能在较旧的环境中工作)是使用 typeof:

var undefined = 1;
var x;
typeof x == 'undefined'; //true

还请记住,对 undefined 使用等式检查 (==) 也会检查 null(事实上,undefined == nullundefined !== null),因此我建议使用严格相等运算符 (===),它仅检查 未定义

关于javascript - 想了解更多关于 undefined 的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19000087/

相关文章:

javascript - VueJS : Deleting dinamically rendered component in array with splice() method based on provided index, 不起作用

javascript - 谷歌地图缩放控制搞砸了

angular - 应用程序启动时未定义的 ngrx 状态,未设置 StoreModule.forRoot()

javascript - IE 抛出 JavaScript 错误 : The value of the property 'googleMapsQuery' is null or undefined, 不是函数对象(在其他浏览器中有效)

javascript - 为什么我的范围函数在循环应该关闭后显示未定义的值?

javascript - 从主文件调用另一个文件中的异步函数

javascript - jQuery 附加到动态创建的 div

javascript - 使用 jQuery 只选择一个元素

地理 IP 查找上的 Perl 未定义错误

javascript - 在 for 循环中输出 javascript 数组值会导致未定义