js之void

void操作符

产生式 UnaryExpression : void UnaryExpression 按如下流程解释:

  • 令 expr 为解释执行UnaryExpression的结果。
  • 调用 GetValue(expr).
  • 返回 undefined.

注意:GetValue一定要调用,即使它的值不会被用到,但是这个表达式可能会有副作用(side-effects)。

so:

function x() {
   var undefined = 'hello world',
       f = {},
       window = {
           'undefined': 'joke'
       };
   console.log(undefined);// hello world
   console.log(window.undefined); //joke
   console.log(f.a === undefined); //false
   console.log(f.a === void 0); //true
}

除了采用void能保证取到undefined值以外,还有其它方法吗?有的,还有一种方式是通过函数调用。如AngularJS的源码里就用这样的方式:

(function(window, document, undefined) {
    //.....
})(window, document);

so:

总结:

  • 通过采用void 0undefined比采用字面上的undefined更靠谱更安全,应该优先采用void 0这种方式。
  • 填充<a>href确保点击时不会产生页面跳转; 填充<image>src,确保不会向服务器发出垃圾请求。


版权声明:本文为qq_21423689原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。