通过Invoking a function without parentheses阅读,在评论和答案中多次说明不在生产中使用此类代码。为什么请?
我是JavaScript的初学者,你可以从这个问题中猜出来。如果有人可以用非专业人士的说法来表达他们的答案,那么这也很好,但也请与经验丰富的JS人员讨论,这些人可能需要更详细和技术更详细的答复。
在生产过程中使用没有括号的函数可能会出现或出现什么问题的例子将是答案的一个很好的补充。
以下是调用函数的示例代码,其中没有从该问题的答案中取出括号。
var h = {
get ello () {
alert("World");
}
}
使用以下命令运行此脚本:
h.ello // Fires up alert "world"
或
var h = {
set ello (what) {
alert("Hello " + what);
}
}
h.ello = "world" // Fires up alert "Hello world"
答案 0 :(得分:7)
它是否在生产中并不重要。
这是因为它看起来不像是一个函数调用,这让其他开发人员感到困惑。
想象一下,当任何属性访问和赋值可以调用某些任意代码时,跟踪大型应用程序中的某些复杂行为是多么困难。
尽管getter,setter和最终代理有一些有效用途,但它们适用于小型表面API中的特定行为。它们可能不应该被用作通用编程技术。