这几天在github的源码中看到了很多 result == void 0 的判断,起了好奇心,这句话是啥意思?

为啥经常出现在代码中,于是马上行动起来,Google一搜第一条就是stackoverflow的回答,看完后恍然大悟,写下这篇心得分享给大家。

语法

void expression

MDN的描述

能向期望一个表达式的值是 undefined 的地方插入会产生副作用的表达式。也就是为了避免产生某种副作用,将一个为 undefined 的值转换为 void 表达式

作用

避免undefined的重定义

由于undefined不是个关键字,es5以前可以将变量名undefined赋予一个变量,这时将会改变undefined的作用,在很多源码库中都使用了void(0)代替undefined。这个bug被支持es5及更高版本的浏览器修复了,IE8中仍存在这个问题,eg:

alert(undefined);   // undefined
var undefined = "various";
alert(undefined); // various

节省代码库的体积

void 0undefined更简短,对于浏览器来说这能减少很多字节。

可作为一个函数表达式

在使用立即执行的函数表达式时,可以利用void运算符让JavaScript引擎把一个函数识别成函数表达式而不是函数声明(语句)。

void function iife() {
var bar = function () {};
var baz = function () {}; var foo = function () {
bar();
baz();
}; foo();
}();

JavaScript URLs

当用户点击一个以JavaScript:URL时,浏览器对冒号后面的代码求值,然后把求值的结果显示在页面上,这时页面基本上是一大片空白,这通常不是我们想要的。只有当冒号后面的代码是undefined时,浏览器才不会做这件事,我们经常会用void运算符来实现这个需求。像下面这样:

<a href="javascript:void(0);">
Click here to do something
</a>

参考链接:what-does-void-0-mean

最新文章

  1. iOS系列教程 目录 (持续更新...)
  2. svn的牛逼操作反向merge
  3. Ignite安装配置——中篇
  4. dpkg 被中断,您必须手工运行 sudo dpkg -configure -a 解决
  5. 华为OJ平台——首次不重复字符
  6. React编写input组件传参共用onChange
  7. 关于ip通信学习感想
  8. statrc部分
  9. redis底层设计(一)——内部数据结构
  10. HDU 4913 Least common multiple
  11. YARN Resource Management
  12. Docker:Windows7下使用docker toolbox(1)
  13. 基于Python的机器学习实战:KNN
  14. Getting Start chrome-extension demo
  15. php的一个验证邮箱的正则表达式
  16. lua栈
  17. Fragment+ViewPager实现仿微信点击和滑动切换界面
  18. C# 实现动态添加列,新增合计行,求和
  19. Pig关系型运算符例子
  20. 初探 Qt Opengl【2】

热门文章

  1. ASP.NET AJAX注册命名空间
  2. 一、什么是hadoop?
  3. Kmeans在MapReduce中的实现
  4. 基于libUSB的USB设备固件更新程序(下载数据)(转)
  5. Treap初步
  6. NOIP前刷水行动
  7. TFS2013 升级至TFS2015及项目的创建
  8. PreparedStatement接口
  9. 分30条依次解析xml并插入数据库成功
  10. java爬虫技术