这几天在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

JS - What does `void 0` mean?的更多相关文章

  1. 转:js中javascript:void(0) 真正含义

    from:http://www.jb51.net/article/71532.htm 在Javascript中void是一个操作符,该操作符指定要计算一个表达式但是不返回值. 我想使用过ajax的都常 ...

  2. JS的javascript:void(0)用法

    javascript:void(0)用法如下: <a href="javascript:void(0)"></a> // 执行js函数,0表示不执行函数. ...

  3. js中 javascript:void(0) 用法详解

    点击链接不做任何事情: <a href="#" onclick="return false">test</a> <a href=& ...

  4. JS中javascript:void(0)真正含义

    对于下面的代码,其中void(0)的含义是什么? <a href="javascript:Test();void(0);">hello</a> 其实,Jav ...

  5. 为什么js中要用void 0 代替undefined

    这个是Backbone.js中的一句源码 if (callback !== void 0 && 'context' in opts && opts.context == ...

  6. js & void() & void(0)

    js & void() & void(0) https://www.runoob.com/js/js-void.html void() <a href="javascr ...

  7. JS魔法堂:从void 0 === undefined说起

    一.前言 当使用coffeescript书写如下代码时 name = person?.name 会被预编译为 ; ,那么void 0到底是什么意思呢?运行得知void 0===undefined为tr ...

  8. js javascript:void(0) 真正含义

    我想使用过ajax的都常见这样的代码:<a href="javascript:doTest2();void(0);">here</a>但这儿的void(0) ...

  9. js 里面的那些节省字节的写法 a|0 void 0等等

    //取整 parseInt(a,10); Math.floor(a); ~~a; //节省之后的写法 a|0; //节省之后的写法 //四舍五入 Math.round(a); a+.5|0; //节省 ...

随机推荐

  1. sublime text 我的常用配置

    { "color_scheme": "Packages/Color Scheme - Default/IDLE.tmTheme", "font_fac ...

  2. Servlet实现文件上传(简单)(一)

     1..使用到的jar包,为apache的一个子项目  此commons-fileupload-1.2.2需要以下commons-io-2.0.1的支持   2.页面展示fileUpload.jsp ...

  3. 微信小程序一些简单的快捷键

    常用快捷键 格式调整 Ctrl+S:保存文件Ctrl+[, Ctrl+]:代码行缩进Ctrl+Shift+[, Ctrl+Shift+]:折叠打开代码块Ctrl+C Ctrl+V:复制粘贴,如果没有选 ...

  4. Linux/hp unix/AIX日常巡检脚本(转)

    以下为Linux/hp unix/AIX日常巡检脚本,大家可以参考着进行改写,用于自己的服务器. #!/usr/bin/ksh syserrdate=`date +"%m/%d"` ...

  5. 关于div宽度和高度的100%设定

    设置DIV大小的有两个属性width和height,以前在学习DIV每次给DIV设置100%宽度或高度时都很迷惑,不明白这个100%的宽度(高度)到底有多宽有多高?这个100%是从哪里得到的从哪里继承 ...

  6. leetcode--012 single number I

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAA0MAAADGCAIAAACfN8xOAAAZ6UlEQVR4nO3dsZKcurbG8fNOnd1nIv

  7. matlab取模与取余

    mod函数采用floor,rem函数采用fix函数.那么什么是floor和fix? fix(x):截尾取整.如: >> fix([3.4 , -3.4]) ans = 3 -3 floor ...

  8. 单纯觉得是篇好文——跨终端Web之Hybrid App

    [reference]http://www.infoq.com/cn/articles/hybrid-app#theCommentsSection 编者按:InfoQ开设新栏目“品味书香”,精选技术书 ...

  9. 微软企业库DBBA的研究

    Summary:如何入门使用Data Access Application Block,可以参考Enterprise Library 3.1中文帮助:数据访问应用程序块.这篇文章侧重在DAAB工作原理 ...

  10. android TextView实现滚动显示效果

    在android中,如果设置了TextView控件为单行显示,且显示的文本太长的话,默认情况下会造成显示不全的情况,这种情况下我们需要设置该控件属性如下: <TextView android:i ...