在这里使用`void`的目的是什么?

时间:2011-05-25 19:11:19

标签: javascript

  

可能重复:
  what is the point of void in javascript

在这里使用void的目的是什么?如果只删除void(),它也应该有效,对吧?

var b=document.body;

if(b&&!document.xmlVersion) {
   void(z=document.createElement('script'));
   void(z.src='http://www.google.ca/reader/ui/subscribe-bookmarklet.js');
   void(b.appendChild(z));
}
else {
  location='http://www.google.com/reader/view/feed/'+encodeURIComponent(location.href);
}

3 个答案:

答案 0 :(得分:5)

void是运行表达式并返回undefined

的关键字

void 0 === undefined

void (foo = 42) === undefined

关于href="javascript:..."如何运作。

  

除非返回的值未定义。

您需要返回undefined,否则页面将被覆盖。使用void关键字是实现此目标的最简单方法。

答案 1 :(得分:4)

是。它将无效地工作。

没有必要在那里使用空白。

答案 2 :(得分:3)

我用Google搜索了你的代码片段,看起来它通常嵌入在前面带有“javascript:”的链接中。引用void运算符的Mozilla引用:

  

JavaScript URI

     

当浏览器跟随javascript:URI时,它会评估URI中的代码,然后用返回的值替换页面内容,除非返回的值未定义。 void运算符可用于返回undefined。例如:

<a href="javascript:void(0);">Click here to do nothing</a>
<a href="javascript:void(document.body.style.backgroundColor='green');">Click here for green background</a>
     

但请注意,javascript:URI现在经常不鼓励其他替代方案,例如事件。

来源:https://developer.mozilla.org/en/JavaScript/Reference/Operators/Special/void

因此,当代码在链接中执行时,它会阻止页面内容被覆盖。

在这种情况下,如果在没有javascript:URI的情况下执行代码,则void运算符不应该有任何区别。 void运算符只是简单地计算其输入表达式并返回undefined。