这两个javascript表达式之间有什么区别?

Ben*_*Ben 1 html javascript

我有一个<a>应该运行代码而不是重定向的元素.

这里有两个代码示例,我认为应该具有相同的效果,但它不会:

这工作:

<a href="#" onclick="alert('Works'); return false;" />
Run Code Online (Sandbox Code Playgroud)

这不会:

<a href="#" onclick="return function() {alert('don't Work'); return false;};" />
Run Code Online (Sandbox Code Playgroud)

他们俩不应该这样做吗?是不是第二次尝试的表达式被评估,调用匿名函数并返回false?

谢谢!

Que*_*tin 6

第二个示例定义一个函数并返回它.它从不称呼它.

onclick="return function() {alert('don\'t Work'); return false;}();" 
Run Code Online (Sandbox Code Playgroud)

如果你调用它(并修复引用错误),那么你会得到相同的效果.