在我的程序中有一段与此类似的代码:
Number.prototype.print = function(){ console.log(this); };
var a = 1,
b = a + 2
(a - b).print()
然而,当执行此操作时,它会抛出错误,指出“数字不是函数”。这里发生了什么,为什么会抛出这个错误?
答案 0 :(得分:1)
在JavaScript中,大多数情况下会自动插入分号。然而,似乎开发ES的人喜欢通过设置分区的奇怪规则来使事情变得更复杂。
在这种情况下,他们决定不为你插入分号,因此代码变为:
var a = 1, b = a + 2(a - b).print()
如您所见,2
被解释为函数引用,当然,2
作为基元不是函数,因此也就是错误。