为什么在 foo:bar() 函数中使用冒号会调用 return ReferenceError 而不是 SyntaxError?
Why does the use of a colon in foo:bar() function call return ReferenceError instead of SyntaxError?
var foo = {
bar: function() { return ""; }
};
foo:bar();
以上结果:
Uncaught ReferenceError: bar is not defined
在此上下文中使用它 console.log(foo:bar());
结果:
SyntaxError: missing ) after argument list
在某些情况下对象冒号对象/函数会出现 SyntaxError
但是在这种情况下却没有,为什么会这样呢?
我已经在 node.js 和几个浏览器中对此进行了测试,并且这种行为是一致的,所以我很好奇在 "foo:bar".
的上下文中什么不会产生任何错误
不记得我是如何实现 SyntaxError 的,但它与使用 :
从对象调用函数有关
我不确定你想用这个实现什么。
将其设为 "foo:bar" 它与 foo
变量无关。相反,它 declares label 的名称为 'foo'.
在 console.log
内声明标签会导致 SyntaxError,因为它破坏了对语句的解析。
另一方面,如您所述,没有 console.log
的语法正确:它声明标签 'foo' 并尝试调用不存在的函数 'bar'。这就是它显示 ReferenceError 的原因。
无论如何 Javascript 期望点 (.) 访问对象成员:foo.bar()
var foo = {
bar: function() { return ""; }
};
foo:bar();
以上结果:
Uncaught ReferenceError: bar is not defined
在此上下文中使用它 console.log(foo:bar());
结果:
SyntaxError: missing ) after argument list
在某些情况下对象冒号对象/函数会出现 SyntaxError 但是在这种情况下却没有,为什么会这样呢? 我已经在 node.js 和几个浏览器中对此进行了测试,并且这种行为是一致的,所以我很好奇在 "foo:bar".
的上下文中什么不会产生任何错误不记得我是如何实现 SyntaxError 的,但它与使用 :
我不确定你想用这个实现什么。
将其设为 "foo:bar" 它与 foo
变量无关。相反,它 declares label 的名称为 'foo'.
在 console.log
内声明标签会导致 SyntaxError,因为它破坏了对语句的解析。
另一方面,如您所述,没有 console.log
的语法正确:它声明标签 'foo' 并尝试调用不存在的函数 'bar'。这就是它显示 ReferenceError 的原因。
无论如何 Javascript 期望点 (.) 访问对象成员:foo.bar()