【问题标题】:What is the difference between function calls in javascript?javascript中的函数调用有什么区别?
【发布时间】:2013-11-24 20:44:28
【问题描述】:

我在一次采访中被问到这个问题 像这样的 JavaScript 函数:

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

现在在一个 html 按钮中单击

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

这三个调用有什么区别?

【问题讨论】:

标签: javascript


【解决方案1】:
<button onclick= "a()">

只需运行函数a()。

<button onclick= "return a()">

这将运行然后评估来自函数a() 的响应。如果此响应为假,则不会运行其他进一步的条件。

<button onclick= "javascript a()">

这行不通。 &lt;button click= "javascript: a()"&gt; 与示例 1 的结果相同。

【讨论】:

    【解决方案2】:

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

    1. 只是一个函数调用。
    2. 返回函数调用的值(如果是false,将取消点击元素的默认动作)
    3. 引发语法错误,因为您不能有标识符 (javascript) 后跟空格,后跟函数调用

    如果最后一个是javascript:a(),那么您将拥有一个完全没用的label。

    也就是说,这三个都是不好的 HTML 示例。您应该避免使用onclick,而应使用addEventListener。

    【讨论】:

    • 不用担心我给它的html,例如。什么是无用标签??
    • 我链接到答案中的标签文档。标签用于跳出循环。没有循环可以跳出来,所以没用。
    • 好的,谢谢,让我看看..我不知道标签,所以谢谢
    • 我想最后一个可能是:&lt;a href="javascript: a();"&gt; - 见stackoverflow.com/a/11824068/206614
    • href="javascript:... 比前面的任何例子都差。使用addEventListener。
    【解决方案3】:

    第一个和第二个的区别在于,第二个将函数的返回值传递并使其成为事件处理程序的返回值。这使得函数可以返回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。如果您在事件处理程序中错误地使用它,它将被解释为标签。它不会阻止脚本工作,因为它恰好是有效的语法,但它没用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-06
      • 2012-08-11
      • 1970-01-01
      • 2017-12-23
      • 2013-03-30
      相关资源
      最近更新 更多