[英]Javascript syntax, using functionName vs. functionName()
[英]Javascript Arrow calling a function from another with functionName() vs ()=>functionName
假设您有一个直到运行时才想调用的方法/函数。
const someMethod = () => {
document.getElementById("myField").value = "Hello";
}
术语是什么,它们的执行方式有什么区别。
this.check(() => someMethod);
和
this.check(someMethod())
他们完全不同。
this.check(() => someMethod);
将传递一个回调,当被调用时(如果有的话),返回一个 function。
this.check(someMethod())
将立即调用someMethod
,然后将结果传递给this.check
方法。
另一个未列出的选项是this.check(() => someMethod());
,它会在调用传递给check
的回调时调用someMethod
。
如果this
上下文是你担心的事情,那么:
this.check(someObj.someMethod)
将导致someMethod
,当被调用时,将被调用this
,无论check
方法希望它是什么。 它不保留someObj
的上下文。 相比之下
this.check(() => someObj.someMethod())
将导致someMethod
被调用this
的someObj
,无论check
如何尝试调用它。
因此,通常,为了安全起见,您需要this.check(() => someObj.someMethod())
- 或提前绑定someMethod
,或使用箭头 function 而不是function
声明someMethod
。
这里: this.check
接收一个回调作为它的参数,它返回someMethod
function。
this.check(() => someMethod);
在这种情况下: this.check
接收someMethod
返回的值作为其参数。
this.check(someMethod())
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.