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

javascript中函数调用的区别是什么?,javascript,Javascript,我在一次采访中被问到这个问题 类似以下的JavaScript函数: function a(){ /// ---- Some Code --- } 现在在html按钮中单击 <button click= "a()"> <button click= "return a()"> <button click= "javascript a()"> 这3个调用之间有什么区别?HTML无效,但如果您单击了onclick,则: 只是一个函数调用 返回函数调用的值(

我在一次采访中被问到这个问题 类似以下的JavaScript函数:

function a(){
 /// ----  Some Code ---
}
现在在html按钮中单击

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


这3个调用之间有什么区别?

HTML无效,但如果您单击了
onclick
,则:

  • 只是一个函数调用
  • 返回函数调用的值(如果为
    false
    ,将取消单击元素的默认操作)
  • 抛出语法错误,因为标识符(
    javascript
    )不能后跟空格和函数调用
  • 如果最后一个是
    javascript:a()


    也就是说,这三个都是糟糕的HTML示例。您应该避免使用
    onclick
    ,以支持。

    HTML无效,但如果您使用了
    onclick
    ,则:

  • 只是一个函数调用
  • 返回函数调用的值(如果为
    false
    ,将取消单击元素的默认操作)
  • 抛出语法错误,因为标识符(
    javascript
    )不能后跟空格和函数调用
  • 如果最后一个是
    javascript:a()

    也就是说,这三个都是糟糕的HTML示例。您应该避免单击
    onclick
    ,以支持

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

    <button onclick= "javascript a()">
    
    
    
    这是行不通的<代码>
    的结果与示例1相同

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

    <button onclick= "javascript a()">
    
    
    

    这是行不通的<代码>
    的结果与示例1相同。

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

    function handleClick() {
      // do something here
      return false;
    }
    
    <a href="fallback.html" onclick="return handleClick();">click me</a>
    
    有时,人们出于习惯,或者因为认为事件处理程序应该在那里,而将
    javascript:
    (而不是
    javascript
    )放在事件处理程序的第一位。它来自于在链接的URL中使用Javascript:

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

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

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

    function handleClick() {
      // do something here
      return false;
    }
    
    <a href="fallback.html" onclick="return handleClick();">click me</a>
    
    有时,人们出于习惯,或者因为认为事件处理程序应该在那里,而将
    javascript:
    (而不是
    javascript
    )放在事件处理程序的第一位。它来自于在链接的URL中使用Javascript:

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

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

    不要担心我给它的html,例如什么是无用的标签??我在答案中链接到了标签文档。标签用于跳出循环。没有可以跳出的循环,所以它是无用的。好的,谢谢,让我看看。。我不知道这个标签,所以我想最后一个可能是:
    href=“javascript:…
    比前面的任何示例都更糟糕。使用
    addEventListener
    。不要担心我给出的html,例如:什么是无用标签?我在答案中链接到了标签文档。标签用于跳出循环。没有可以跳出的循环,所以它是无用的。好的,谢谢,让我看看。。我不知道这个标签,所以我认为最后一个可能是:
    href=“javascript:…
    比前面的任何示例都更糟糕。使用
    addEventListener
    。相关:相关: