JavaScript   发布时间:2022-04-16  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了理解Javascript中的“未定义”:它是如何工作的,如何安全地检查它以及是否可以重新分配大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我一直在阅读 JavaScript中未定义的内容,现在我不确定我的理解是否正确.有很多关于如何检查未定义的讨论,但不知怎的,我找不到任何提及的东西对我来说似乎是理解未定义实际如何工作的基础(未定义为宿主对象上的属性).这就是这个问题的原因,我需要确认我理解的是正确的,如果我错了,我会很感激澄清.

好的,首先,undefined是主机对象(浏览器中的窗口)的属性,因此使用它是完全合法的:

window.undefined

此属性的值为“undefined”类型.这是JavaScript类型之一以及Object,String,number和Null.所以,如果我这样做:

if(someVar===undefined) {}

我实际上正在检查window.undefined属性,无论它包含什么,是吗?

所以这下面的代码会非常愚蠢,因为这会检查someVar只针对字符串“undefined”,而不是窗口对象的类型和属性,对吧?

if(someVar==='undefined') {}

下面这也是不正确的,因为这将检查window.undefined属性(无论它包含什么):

if(typeof someVar===undefined) {}

因此,总结一下,检查undefined的唯一正确和跨浏览器的方法是使用typeof例如:

if(typeof someVar==='undefined')

是对的吗?

同样在ES5 window.undefined中无法重新分配,但它在旧浏览器中完全合法吗?

然而,如果我的理解是正确的,这仍然可以做到并且是邪恶的:

(function() { 
  var undefined=66;
  alert(undefined);
})()

如果我误解了JavaScript中的undefined是如何工作的,我将不胜感激.

解决方法

你几乎是正确的.除此之外:

在javascript中有3个未定义.全局变量未定义,值未定义且类型未定义.

即使覆盖了全局变量undefined,仍然存在未定义的值.有几种方法可以获得它,其中一种是函数的空参数,另一种是变量声明而不分配任何东西:

// Note: Probably need older browsers to assign to undefined:
window.undefined = 1;

(function(foo){ // the value of foo is undefined;
    var bar;    // the value of bar is undefined;

    return [foo === bar,foo === window.undefined]; // returns [true,false]
})();

请注意,在上面的示例中,我们检查的是值,而不是类型.是===检查类型和值但是如果用==替换==结果将是相同的.

undefined值的类型为undefined(规范和文档中的’未定义’,但typeof返回’undefined’),类型undefined仅对undefined值有效.

大佬总结

以上是大佬教程为你收集整理的理解Javascript中的“未定义”:它是如何工作的,如何安全地检查它以及是否可以重新分配全部内容,希望文章能够帮你解决理解Javascript中的“未定义”:它是如何工作的,如何安全地检查它以及是否可以重新分配所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。