如您所见,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'
。
请记住,undefined 和 undeclared 之间存在细微差别:
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 == null
但 undefined !== null
),因此我建议使用严格相等运算符 (===
),它仅检查 未定义
。
关于javascript - 想了解更多关于 undefined 的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19000087/