阅读后两者:
difference between "void 0 " and "undefined",https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/void
我还有一些问题。
我读过这个
window.undefined
可以覆盖v void
运营商将返回未定义的值always
但引起我注意的例子是MDN中的那个:
<a href="javascript:void(0);">Click here to do nothing</a>
为了做 nothing ,我一直以为我应该写:
href="javascript:return false;"
这引出了另一个问题:(在Href
上下文!):
javascript:void(0);
vs javascript:return false;
有什么区别?
另外 -
function doWork() {
return void( 0 );
}
完全
function doWork() {
return undefined;
}
感谢。
答案 0 :(得分:6)
这将无法正常工作:
href="javascript:return false;"
因为你没有参加比赛。你在想这个:
onclick="return false;"
这是正确的,因为return false;
放在一个函数中。 false
值告诉onclick
阻止元素的默认行为。
要使return
语句在href
属性中运行,您需要一个完整的功能。
href="javascript:(function() { return false; })();"
但这只是漫长而丑陋的,正如评论所指出的那样,href
中的JavaScript通常是不受欢迎的。
编辑: 我刚学到了一些东西。如上所述具有非undefined
表达式似乎用返回值替换元素(至少在Firefox中)。我并不完全熟悉在href
中使用JavaScript的完整后果,因为我从来没有这样做过。
是的,这个:
return undefined;
返回完全相同的东西:
return void 0;
只要undefined
变量未被其他值重新定义或遮蔽。
虽然他们可能返回同样的事情,但说 同样的事情并不完全准确,因为:
undefined
是一个全局变量,其默认值为undefined
原语
void
是一个一元运算符,它将用undefined
原语替换其操作数的返回值
因此它们都会产生undefined
原语,但它们会以非常不同的方式产生。
答案 1 :(得分:4)
如果您将javascript: something
指定为href
属性的值,则当有人激活该链接时,将评估此something
。
将检查此评估的结果:如果其typeof
评估为'undefined'
字符串,则不会发生任何事情;如果没有,页面将重新加载评估结果作为其内容:
<a href="javascript: void(0);">Nothing to see here, move along...</a>
<a href="javascript: undefined;">No, still nothing...</a>
<a href="javascript: prompt('Where would you like to go today?');">Check this out!</a>
这里的前两个链接基本上什么也没做。但第三个更有趣:无论你在prompt
中输入什么,都会向你显示 - 即使是一个空字符串!但并非全部:如果您点击Cancel
,您仍然会看到一个新页面 - 打印出null
(取消prompt
会返回null
,并且您可能知道,typeof null
实际上是object
; null
已转换为字符串,'null'
}。
它可能会变得更有趣:
<a href="javascript: window.undefined = 333; void(0);">What happens here?</a>
<a href="javascript: window.undefined = 333; undefined;">And here?</a>
嗯,这里我们仍然没有得到任何第一个链接。但第二个链接将在IE8中显示333。 :)
我想,这也是你的第二个问题:typeof void(0)总是是undefined
。如果某人认为将其重新分配给typeof undefined
是个好主意,window.undefined
会给你龙。 )
...是的,javascript: return false;
是错的:你无法从非功能环境返回。你可能把它与onclick: return false
混淆了,但这完全是另一个故事。 )