What is the point of void operator in JavaScript?
我见过一些人在他们的代码中使用void运算符。 我也在href属性中看到了这一点:javascript:void(0)似乎没有javascript:;更好
那么,使用void运算符的理由是什么?
		
		
- 
void是一个在评估给定表达式后不返回任何内容的运算符,您不需要使用"("和")"来使其工作。
 
- 
sizeof在C中是相同的 - 但如果使用括号,则代码更清晰。
 
- 
void不经常使用。 在ES5中,它被认为是过时的。 在评估其操作数后,它返回undefined
 
 
	  
其在链接中的使用说明:
This is the reason that bookmarklets
  often wrap the code inside void() or
  an anonymous function that doesn't
  return anything to stop the browser
  from trying to display the result of
  executing the bookmarklet. For
  example:
1
   | javascript:void(window.open("dom_spy.html"))  | 
 
If you directly use code that returns
  something (a new window instance in
  this case), the browser will end up
  displaying that:
1
   | javascript:window.open("dom_spy.html");  | 
 
In Firefox the above will display:
		
		
- 
另请参见void operator MDN docs。
 
 
	  
直到ES1.3,才能在JavaScript中直接访问undefined值。
因此包括运算符void 以允许访问该值。
它有时很有用,特别是在使用Web API(例如事件处理程序)时,以确保表达式的结果始终为undefined。
当undefined属性添加到ES1.3中的全局对象时,void的实用程序变得不明显。
因此你的问题。
 
考虑以下:
1 2 3 4 5 6
   | With Void 
 
Without Void 
 
<input type="text" id="foo" value="one fish" /> 
<input type="text" id="bar" value="no fish" />  | 
 
第一个链接将交换文本字段的值。第二个链接将打开一个带有"one fish"文本的新页面。如果使用javascript: link,表达式返回null或undefined以外的值时,浏览器会将其解释为链接应该执行的操作。通过将所有表达式/语句包装在void()函数中,可以确保运行整个代码片段。目前,这主要用于Bookmarklets,因为使用onclick属性,或者在单独的Javascript块/文件中设置事件处理程序是"常态"。
对于javascript:与javascript:void(),第一个语句是不明确的。你说,"嘿,我想运行一些javascript",但是你没有提供任何代码。浏览器应该在这里做什么并不一定清楚。使用第二个语句,你说"嘿,运行一些javascript",你的代码最终返回undefined,浏览器知道这意味着"什么也不做"。
由于我在这里,我还要指出,使用javascript:或javascript:void();已经失去了大多数关心标记的人的青睐。更好的办法是让你的onclick处理程序返回false,并将链接指向一个页面/资源,这对于关闭了javascript或使用NoScript等javascript阻止程序的人来说是有意义的。
		
		
- 
问题作者写了"javascript:;",而不是"javascript:"。 那么,在那种情况下不会含糊不清,不是吗?
 
- 
任何空语句是返回false,还是返回true,表明语句成功运行?
 
- 
为什么空语句会返回什么?
 
- 
语法无效:(...;...)。 使用逗号运算符,或在末尾放置void 0或void(0)。