JS - What does `void 0` mean?
2024-10-18 22:27:17
这几天在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 0
比undefined
更简短,对于浏览器来说这能减少很多字节。
可作为一个函数表达式
在使用立即执行的函数表达式时,可以利用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>
最新文章
- iOS系列教程 目录 (持续更新...)
- svn的牛逼操作反向merge
- Ignite安装配置——中篇
- dpkg 被中断,您必须手工运行 sudo dpkg -configure -a 解决
- 华为OJ平台——首次不重复字符
- React编写input组件传参共用onChange
- 关于ip通信学习感想
- statrc部分
- redis底层设计(一)——内部数据结构
- HDU 4913 Least common multiple
- YARN Resource Management
- Docker:Windows7下使用docker toolbox(1)
- 基于Python的机器学习实战:KNN
- Getting Start chrome-extension demo
- php的一个验证邮箱的正则表达式
- lua栈
- Fragment+ViewPager实现仿微信点击和滑动切换界面
- C# 实现动态添加列,新增合计行,求和
- Pig关系型运算符例子
- 初探 Qt Opengl【2】