这几天在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. jsoncpp第二篇------API

    更多API参考jsoncpp头文件 1  jsoncpp的api简要说明 1,解析(json字符串转为对象) std::string strDataJson; Json::Reader JReader ...

  2. CocoaPods安装和使用教程 分类: ios技术 ios相关 2015-03-11 21:53 48人阅读 评论(0) 收藏

    目录 CocoaPods是什么? 如何下载和安装CocoaPods? 如何使用CocoaPods? 场景1:利用CocoaPods,在项目中导入AFNetworking类库 场景2:如何正确编译运行一 ...

  3. JavaScript高级程序设计-10.11: DOM及其扩展

    什么是DOM? DOM(文档对象模型)是针对 HTML 和 XML 文档的一个 API(应用程序编程接口).DOM描绘了一个层次化的节点树,允许开发人员添加.移除和修改页面的某一部分. 文档节点(do ...

  4. CMake Tutorial

    1.最简实例 使用cmake的最简实例是由一个源程序文件生成一个可执行文件.例如由下述C++源程序文件生成可执行文件tutorial. main.cpp #include<iostream> ...

  5. PHP根据URL提取根域名

    <?php #使用示例 echo getBaseDomain('http://blog.jp.goo.ne.jp/index.php')->domain;echo "\n&quo ...

  6. Delphi中的窗体创建与销毁

    Delphi中的窗体,有模式窗体与非模式窗体两种.两种窗体的调用方式不同,模式窗体使用ShowModal显示,非模式窗体使用Show显示.当显示模式窗体的时候你是不能操作本程序的其他窗体的,你不能把焦 ...

  7. 【WebStorm】前端工具开发利器webstrom专篇...更新中

    http://my.oschina.net/maomi/blog/137807#OSC_h2_5 WebStorm混搭svn WebStorm混搭nodeJS webstorm简单介绍 webstor ...

  8. 安装MYSql Windows7下MySQL5.5.20免安装版的配置

    MySQL Windows安装包说明: 1.mysql-5.5.20-win32.msi:Windows 安装包,图形化的下一步下一步的安装. 2.mysql-5.5.20.zip,这个是window ...

  9. shell读取文件的每一行

    写法一: ---------------------------------------------------------------------------- #!/bin/bash while ...

  10. ViewFlipper的功能与用法

    ViewFlipper组件继承了ViewAnimator,它可调用addView(View v)添加多个组件,一旦向ViewFlipper中添加了多个组件之后,ViewFlipper可使用动画控制多个 ...