VOID 0

void 0

void 关键字,该void 运算符能对给定的表达式进行求值,然后返回 undefined。

void()仅仅是代表不返回任何值,但是括号内的表达式还是要运行,例如下面代码

void(console.log("Wornning!"))

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

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

    foo();
    biz();
}();

JavaScript URIs中,用户在点击一个以 javascript: URI 时,它会评估URI中的代码,然后用返回的值替换页面内容,除非返回的值是undefined。

<a href="javascript:void(0);">点我没有反应的!</a


void可用于返回undefined。underscore 源码没有出现 undefined,而用 void 0 代替。

因为undefined是全局对象的一个属性。也就是说,它是全局作用域的一个变量。undefined的最初值就是原始数据类型undefined。

在现代浏览器(JavaScript 1.8.5/Firefox 4+),自ECMAscript5标准以来undefined是一个不能被配置(non-configurable),不能被重写(non-writable)的属性。

但是事实并非如此,undefined有可能在非全局作用域中被当作标识符(变量名)来使用(因为undefined不是一个保留字)。

(function() {
var undefined = 'foo';
console.log(undefined, typeof undefined)
})()//chrome -- foo string
(function(undefined) {
console.log(undefined, typeof undefined)
})('foo')//chrome -- foo string

所以用void 0替代undefined,更重要的是它不能被重写。

在ES5下,void 0替代undefined能够省字节大小,对压缩代码很有帮助。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,196评论 0 13
  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,905评论 0 38
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,923评论 18 139
  • 1. 一天,老曹心血来潮,问小静:“你希望你未来的男朋友像什么样呀?” 小静仔细想了想,“像人吧!” 老曹无语...
    怀桔阅读 178评论 2 0