javascript中的函数调用有什么区别?

时间:2013-08-05 12:45:47

标签: javascript

我在接受采访时被问到这个问题 像这样的JavaScript函数:

function a(){
 /// ----  Some Code ---
}

现在在html按钮中单击

<button click= "a()">
<button click= "return a()">
<button click= "javascript a()">

这三个电话之间有什么区别?

3 个答案:

答案 0 :(得分:4)

HTML无效,但如果您有onclick则:

  1. 只是一个函数调用。
  2. 返回函数调用的值(如果是false,则取消单击元素的默认操作)
  3. 抛出语法错误,因为您没有标识符(javascript)后跟空格,后跟函数调用
  4. 如果上一次是javascript:a(),那么你将完全没用label

    尽管如此,这三个都是糟糕的HTML示例。您应该避免onclick支持addEventListener

答案 1 :(得分:4)

<button onclick= "a()">

只需运行a()函数。

<button onclick= "return a()">

这将运行,然后评估函数a()的响应。如果此响应为假,那么将不再运行其他条件。

<button onclick= "javascript a()">

这不起作用。 <button click= "javascript: a()">与示例1的结果相同。

答案 2 :(得分:0)

第一个和第二个之间的区别在于第二个传递来自函数的返回值并使其成为事件处理程序的返回值。这使得函数可以返回false来停止事件的默认操作。对于没有区别的按钮,因为没有默认操作,但如果它是链接则会有用。例如:

function handleClick() {
  // do something here
  return false;
}

<a href="fallback.html" onclick="return handleClick();">click me</a>

该脚本将使链接无法导航到fallback.html

第三个代码在两个方面不正确。就目前而言,它会导致语法错误。这个例子应该是:

<button onclick="javascript:a()">

有时人们会将javascript:(而不是javascript)放在事件处理程序中,或者因为他们认为它应该在那里。它来自在链接中的URL中使用Javascript:

<a href="javascript:alert('hello')">click me</a>

当像这样使用时,它会告诉浏览器它是一个要运行的脚本,而不是要导航到的URL。如果在事件处理程序中错误地使用它,它将被解释为标签。它不会阻止脚本工作,因为它恰好是有效的语法,但它没用。