我的编程空间,编程开发者的网络收藏夹
学习永远不晚

JavaScript之不可靠的undefined

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

JavaScript之不可靠的undefined

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的资料请关注编程网其它相关文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

JavaScript之不可靠的undefined

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

HTML Noscript 标签:构建弹性网站的可靠之选

HTML Noscript 标签在构建弹性网站时扮演着举足轻重的角色,它允许网站在 JavaScript 禁用时依然正常工作,从而增强网站的可靠性和用户体验。
HTML Noscript 标签:构建弹性网站的可靠之选
2024-02-10

JavaScript单例模式:构建应用程序的可靠基石

在软件设计中,单例是一种重要的设计模式,它可以确保全局范围内只有一个对象实例,从而简化对象的访问和管理。本文介绍了JavaScript单例模式,展示了它的实现方式,并讨论了它的优点和局限性。
JavaScript单例模式:构建应用程序的可靠基石
2024-02-06

阿里云数据库存储大数据的可靠之选

阿里云是阿里巴巴集团旗下的云计算服务品牌,其数据库服务以其高效、稳定和安全而备受好评。这篇文章将详细介绍阿里云上的数据库种类,以便用户选择最适合自己的数据库。正文:阿里云数据库是阿里云提供的用于存储、管理、处理大量数据的解决方案。在阿里云上,你可以选择不同的数据库类型,满足不同的业务需求。首先,我们来看看阿里云提
阿里云数据库存储大数据的可靠之选
2023-11-21

如何使用单元测试提高JavaScript代码的可靠性

单元测试是一种软件测试方法,可以帮助你验证代码是否按照预期工作。通过在每次提交代码时运行单元测试,你可以快速发现并修复任何问题,从而提高代码的可靠性和可维护性。
如何使用单元测试提高JavaScript代码的可靠性
2024-02-08

JavaScript Jasmine:掌握单元测试的艺术,让代码更可靠

JavaScript Jasmine 是一种强大的单元测试框架,帮助开发人员编写和运行单元测试,以确保代码的正确性和可靠性。通过 Jasmine,开发人员可以快速发现和修复代码中的错误,提高代码质量。
JavaScript Jasmine:掌握单元测试的艺术,让代码更可靠
2024-02-11

JavaScript BOM:前端开发的利器,不可不知

JavaScript BOM(Browser Object Model)是前端开发中不可或缺的重要工具,它提供了许多属性和方法来操作浏览器窗口、历史记录和文档。本文将介绍 JavaScript BOM 的主要功能和使用技巧,帮助前端开发者提高开发效率和用户体验。
JavaScript BOM:前端开发的利器,不可不知
2024-02-22

软考之前的成绩可不可以查到

  可以。在软考成绩查询系统可以选择对应的考试时间进行查询,根据考试年份选择上半年或下半年,输入相关信息即可查询往年的软考成绩。  考生可以通过计算机技术与软件专业技术资格(水平)考试成绩查询平台查询自己的软考成绩,在软考成绩查询系统可以选择对应的考试时间查询之前的软考成绩。  软考成绩查询方法:  1.进入中国计算机
软考之前的成绩可不可以查到
2024-04-18

JavaScript MVVM 架构的最佳实践:打造可靠的 Web 应用程序

JavaScript MVVM 架构最佳实践:保障可靠的 Web 应用程序
JavaScript MVVM 架构的最佳实践:打造可靠的 Web 应用程序
2024-03-03

UNIX服务器的魅力之旅:稳定、可靠、高效的代名词

UNIX服务器以其稳定、可靠、高效的特性成为众多用户的选择。本文将带您领略UNIX服务器的魅力之旅,从它的发展历史到技术特点,再到应用领域,全面了解UNIX服务器的强大优势。
UNIX服务器的魅力之旅:稳定、可靠、高效的代名词
2024-02-13

JavaScript错误处理:如何提高代码的可靠性和健壮性

JavaScript错误处理是提高代码可靠性和健壮性的关键。本文介绍了常见的JavaScript错误类型,并提供了如何处理这些错误的最佳实践,以及演示一些示例代码来帮助您更好地理解JavaScript错误处理。
JavaScript错误处理:如何提高代码的可靠性和健壮性
2024-02-27

编程热搜

目录