Ber*_*rgi 19 javascript reference
该
Reference类型用于解释这种运营商的行为delete,typeof以及赋值运算符.[...]参考是一个已解析的名称绑定.允许函数调用返回引用.纯粹为了宿主对象而承认这种可能性.此规范未定义的内置ECMAScript函数返回引用,并且没有为用户定义的函数提供返回引用的规定.
最后两句话让我印象深刻.有了这个,你可以做一些事情coolHostFn() = value(有效的语法,顺便说一句).所以我的问题是:
是否有任何EcmaScript实现定义导致Reference值的主机功能对象?
谷歌Chrome的引擎非常适合这种方式.但是,您会在控制台中注意到ReferenceError: Invalid left-hand side in assignment执行以下操作时会得到一个:
var myObj = new Object();
function myFunc() {
myObj.test = "blah";
return myObj;
}
myFunc() = new String("foobar");
Run Code Online (Sandbox Code Playgroud)
然而,这是一个早期错误,并且因为v8的ECMAScript实现,如果它myFunc在假定参考错误之前正确执行,这应该工作.
那么,在v8的当前实现中?是和否.它默认实现(由于语言的结构),但是功能因不同的问题而停止.coolHostFn() = value不应该返回错误,并且确实应该能够正确执行.但是,3=4肯定应该返回左侧分配错误.
不完全是你的问题的答案,但我希望它有助于澄清为什么它不起作用.
(这是问题/票据以防任何人想要加入... http://code.google.com/p/v8/issues/detail?id=838)