返回顶部
首页 > 资讯 > 前端开发 > JavaScript >JavaScript之不可靠的undefined
  • 121
分享到

JavaScript之不可靠的undefined

2024-04-02 19:04:59 121人浏览 泡泡鱼
摘要

undefined在 javascript 中,假设我们想判断一个是否是undefined,那么我们通常会这样写: if(a === undefined){//code} 但是

undefined在 javascript 中,假设我们想判断一个是否是undefined,那么我们通常会这样写:


if(a === undefined){//code}

但是,JavaScript 中的undefined并不可靠,我们试着写这样一个函数:


function test(a) {
  var undefined = 1;
  console.log(undefined); // => 1
  if(a===undefined) {
    // ...
  }
}

可以看到,undefined被轻易地修改为了1,使得我们之后的对于undefined理解引起歧义。所以,在 JavaScript 中,把undefined直接解释为 “未定义” 是有风险的,因为这个标识符可能被篡改。

在 ES5 之前,全局的undefined也是可以被修改的,而在 ES5 中,该标识符被设计为了只读标识符, 假如你现在的浏览器不是太老,你可以在控制台中输入以下语句测试一下:


undefined = 1;
console.log(undefined); // => undefined

现在我们能够明确的,标识符undefined并不能真正反映 “未定义”,所以我们得通过其他手段获得这一语义。幸好 JavaScript 还提供了void运算符,该运算符会对指定的表达式求值,并返回受信任的undefined:


void expression

最常见的用法是通过以下运算来获得undefined,表达式为0时的运算开销最小:


void 0;
// or
void(0);

所有需要获得undefined地方,都通过void 0进行了替代

当然,获取undefined还有另一种方式:看过Jquery源码的同学,应该知道里面的立即执行函数:


(function(window,undefined) {
    // ...
})(window)

在这个函数中,我们没有向其传递第二参数(形参名叫undefined),那么第二个参数的值就会被认为 “未定义”,因此,通过这种方式,在该函数的作用域中所有的undefined都为受信的undefined。

以上就是JavaScript之不可靠的undefined的详细内容,更多关于JavaScript之不可靠的undefined的资料请关注编程网其它相关文章!

--结束END--

本文标题: JavaScript之不可靠的undefined

本文链接: https://www.lsjlt.com/news/125519.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • JavaScript之不可靠的undefined
    undefined在 JavaScript 中,假设我们想判断一个是否是undefined,那么我们通常会这样写: if(a === undefined){//code} 但是...
    99+
    2024-04-02
  • javascript中undefined的示例分析
    这篇文章主要介绍了javascript中undefined的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、列出7种数据类型(面试...
    99+
    2024-04-02
  • javascript中undefined与null的区别
      null和undefined基本是同义的,只有一些细微的差别。 null表示"没有对象",即该处不应该有值。典型用法是: (1) 作为函数的参数,...
    99+
    2024-04-02
  • PHP7改进之处:不再出现undefined报错
    PHP7改进之处:不再出现undefined报错 PHP7是PHP语言的一个重大版本更新,带来了许多重要的改进和优化。其中一个显著的改进之处是在处理未定义变量时不再出现undefine...
    99+
    2024-03-04
    php 改进 报错
  • javascript的函数可不可以hook
    这篇文章主要介绍了javascript的函数可不可以hook的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇javascript的函数可不可以hook文章都会有所收获,下面我们一...
    99+
    2024-04-02
  • 你可能不知道的JavaScript之this指向详解
    目录前言默认绑定,全局对象点石成金,隐式绑定隐式绑定丢失指腹为婚,显式绑定内有乾坤,new 绑定军令如山,箭头函数this 绑定优先级总结相关文献引用链接前言 JavaScript ...
    99+
    2024-04-02
  • javascript可不可以加密
    这篇文章主要讲解了“javascript可不可以加密”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“javascript可不可以加密”吧! ...
    99+
    2024-04-02
  • Javascript中Null和undefined的简单理解
    目录前言undefinedNull附:实际应用总结前言 在 JavaScript 中有两种表达“无”的方式,那就是使用undefined和null。 unde...
    99+
    2024-04-02
  • javascript可不可以使用socket
    这篇文章主要介绍了javascript可不可以使用socket的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇javascript可不可以使用socket文章都会有所收获,下面我...
    99+
    2024-04-02
  • JavaScript中可不可以用class
    本文小编为大家详细介绍“JavaScript中可不可以用class”,内容详细,步骤清晰,细节处理妥当,希望这篇“JavaScript中可不可以用class”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深...
    99+
    2024-04-02
  • JavaScript可不可以写后端
    今天小编给大家分享一下JavaScript可不可以写后端的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来...
    99+
    2024-04-02
  • JavaScript中null和undefined的区别是什么
    这篇文章给大家介绍JavaScript中null和undefined的区别是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。网上有很多关于null和undefined区别的论述,看似讲了很多知识,但又好像没什么用,无...
    99+
    2023-06-26
  • javascript中undefined与null的区别有哪些
    今天小编给大家分享一下javascript中undefined与null的区别有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一...
    99+
    2023-07-02
  • JavaScript JSON 的最佳实践:优化性能和可靠性
    对象代替数组:当需要存储键值对时,使用对象比数组更有效率。 数组代替对象:当需要存储按索引访问的元素时,使用数组比对象更快。 优化数据量 仅发送必要数据:避免发送不需要的数据,因为这会增加网络开销。 延迟加载:只在需要时加载数据,以...
    99+
    2024-04-02
  • 测试游戏选择香港服务器可不可靠
    当选择香港服务器进行游戏测试时,有一些因素需要考虑: 网络延迟:连接到香港服务器可能导致较低的延迟,这会对游戏体验产生影响。如果网...
    99+
    2024-04-09
    香港服务器 服务器
  • javascript可不可以开发游戏
    小编给大家分享一下javascript可不可以开发游戏,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧! javascript可以开发游戏,JavaScript实现...
    99+
    2024-04-02
  • JavaScript判断空值、NULL、undefined的方法对比
    JavaScript五种原始类型(boolean、number、string、null、undefined)中的一种。在鉴别JavaScript原始类型的时候我们会用到typeof操...
    99+
    2022-12-22
    js判断空值 js判断NULL js判断undefined
  • HTML Noscript 标签:构建弹性网站的可靠之选
    在当今互联网时代,网站的可靠性和用户体验至关重要。JavaScript 作为一种广泛使用的脚本语言,为网站带来了丰富的交互性和动态性,但也可能导致网站在 JavaScript 禁用时出现问题。 为了解决这一问题,HTML Noscri...
    99+
    2024-02-10
    HTML Noscript JavaScript 网站可靠性 弹性 用户体验
  • JavaScript单例模式:构建应用程序的可靠基石
    单例模式是一种经典的设计模式,它确保一个类只有一个实例,并且提供了一个全局访问点来获取这个实例。在JavaScript中,有几种方法可以实现单例模式。 1. 使用立即执行函数(IIFE) 这是实现单例模式最简单的方法之一。IIFE是一个...
    99+
    2024-02-06
    JavaScript 单例模式 设计模式 面向对象
  • JavaScript React 中的测试:确保代码质量和可靠性
    单元测试 单元测试专注于测试代码的最小单元,通常是单个函数或组件。它们的目的是隔离和验证代码的特定部分的正确性。常用的单元测试框架包括: Jest Mocha Enzyme 单元测试通过模拟输入、断言输出并检查代码是否按预期执行来工作...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作