我一直在阅读 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是如何工作的,我将不胜感激.

解决方法

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

The value of [window.undefined] is type “undefined”. This is one of Javascriupt types along with Object,Number,and Null

在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中的“未定义”:它是如何工作的,如何安全地检查它以及是否可以重新分配的更多相关文章

  1. vue打包报错:ERROR in static/js/xxx.js from UglifyJs undefined问题

    这篇文章主要介绍了vue打包报错:ERROR in static/js/xxx.js from UglifyJs undefined问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  2. 一文让你彻底弄懂js中undefined和null的区别

    JavaScript是一门动态类型语言,元素除了表示存在的空值外,还有可能根本就不存在,这就是undefined存在的原因,这篇文章主要给大家介绍了关于undefined和null区别的相关资料,需要的朋友可以参考下

  3. vue在取对象长度length时候出现undefined的解决

    这篇文章主要介绍了vue在取对象长度length时候出现undefined的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  4. JavaScript之不可靠的undefined

    这篇文章主要介绍了JavaScript之不可靠的undefined,想深入JS的同学,可以参考下

  5. Javascript基础_简单比较undefined和null 值

    下面小编就为大家带来一篇Javascript基础_简单比较undefined和null 值。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  6. php遇到错误Call to undefined function ImageCreate()解决方法

    刚配置好服务器,运行php的时候提示Call to undefined function imagecreate错误,经过百度发现是php不支持gd库,linux服务器需要重新make,windows下比较简单了,下面是具体的方法

  7. 辨析JavaScript中的Undefined类型与null类型

    Undefined与null都是js中的基本数据类型,然而正如它们的名字那样,未初始化和空并不相同,下面我们就来详细辨析JavaScript中的Undefined类型与null类型:

  8. JavaScript中undefined和is not defined的区别与异常处理

    这篇文章主要给大家介绍了关于JavaScript中undefined和is not defined的区别与异常处理的相关资料,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

  9. php运行报错Call to undefined function curl_init()的最新解决方法

    其实在网上很早之前就出现过这个问题,网上百度了下,答案千篇一律,最近又遇到这个问题,但是百度出来的问题不能解决这个问题了,所以只能翻墙找答案,现在将解决的方法分享给大家,有需要的朋友们可以参考借鉴,下面来一起学习学习吧。

  10. 浅谈vue中computed属性对data属性赋值为undefined的原因

    本文主要介绍了浅谈vue中computed属性对data属性赋值为undefined的原因,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

随机推荐

  1. js中‘!.’是什么意思

  2. Vue如何指定不编译的文件夹和favicon.ico

    这篇文章主要介绍了Vue如何指定不编译的文件夹和favicon.ico,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  3. 基于JavaScript编写一个图片转PDF转换器

    本文为大家介绍了一个简单的 JavaScript 项目,可以将图片转换为 PDF 文件。你可以从本地选择任何一张图片,只需点击一下即可将其转换为 PDF 文件,感兴趣的可以动手尝试一下

  4. jquery点赞功能实现代码 点个赞吧!

    点赞功能很多地方都会出现,如何实现爱心点赞功能,这篇文章主要为大家详细介绍了jquery点赞功能实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  5. AngularJs上传前预览图片的实例代码

    使用AngularJs进行开发,在项目中,经常会遇到上传图片后,需在一旁预览图片内容,怎么实现这样的功能呢?今天小编给大家分享AugularJs上传前预览图片的实现代码,需要的朋友参考下吧

  6. JavaScript面向对象编程入门教程

    这篇文章主要介绍了JavaScript面向对象编程的相关概念,例如类、对象、属性、方法等面向对象的术语,并以实例讲解各种术语的使用,非常好的一篇面向对象入门教程,其它语言也可以参考哦

  7. jQuery中的通配符选择器使用总结

    通配符在控制input标签时相当好用,这里简单进行了jQuery中的通配符选择器使用总结,需要的朋友可以参考下

  8. javascript 动态调整图片尺寸实现代码

    在自己的网站上更新文章时一个比较常见的问题是:文章插图太宽,使整个网页都变形了。如果对每个插图都先进行缩放再插入的话,太麻烦了。

  9. jquery ajaxfileupload异步上传插件

    这篇文章主要为大家详细介绍了jquery ajaxfileupload异步上传插件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  10. React学习之受控组件与数据共享实例分析

    这篇文章主要介绍了React学习之受控组件与数据共享,结合实例形式分析了React受控组件与组件间数据共享相关原理与使用技巧,需要的朋友可以参考下

返回
顶部