【问题标题】:Javascript. Why are not parentheses used when calling methods?Javascript。为什么调用方法时不用括号?
【发布时间】:2020-08-17 06:10:18
【问题描述】:

当我遇到这个例子时,我正在 Codecademy 中学习 React:

class MyClass extends React.Component {
   myFunc() {
     alert('Stop it.  Stop hovering.');
   }

   render() {
      return (
         <div onHover={this.myFunc}>
         </div>
   );
 }

我注意到当调用 myFunc 时,没有使用括号,我想知道为什么。如果有人可以解释,我将不胜感激。

【问题讨论】:

  • 您正在传递onHover 事件的回调名称。仅当您要执行该函数时才需要括号。
  • 因为您正在传递对函数的引用...(函数定义以便反应可以在事件发生时执行它)
  • 所以:函数/方法在不使用括号时调用then;特别是,回调通常在稍后调用,在这种情况下,当实际调用函数时,使用括号(在内部,在这种情况下通过反应)..
  • 这是 Javascript 的一种行为:将函数作为参数传递。
  • 这个帖子已经解释清楚了。 stackoverflow.com/questions/42178136/…

标签: javascript reactjs methods parentheses calling-convention


【解决方案1】:

如果您添加 () 函数将在每次呈现您的网页时执行,您只会传递对该函数的引用

【讨论】:

    【解决方案2】:

    HTML 元素上存在各种事件,例如单击、鼠标悬停等。 如果您想在 HTML 元素上悬停时执行一些操作,那么浏览器会为我们提供这些方法,这些方法将在这些操作发生时调用。

    • 在上述情况下,元素悬停浏览器将触发/调用 myFunc 方法(onHover)处理程序
    • 无需调用 myFunc,因为它在 Hover 事件上触发
    • 不应在渲染内部调用 OnHover 处理程序,否则每次渲染不正确时都会调用它

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-13
      • 2021-05-23
      • 2021-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-19
      相关资源
      最近更新 更多