Ecmascript函数的真实世界示例返回Reference?

时间:2012-10-29 15:14:42

标签: javascript reference

阅读EcmaScript specification, section 8.7 The Reference Specification Type

  

Reference类型用于解释此类运算符的行为deletetypeof和赋值运算符。 [...]参考是一个已解析的名称绑定。

     

允许函数调用返回引用。纯粹为了宿主对象而承认这种可能性。此规范未定义的内置ECMAScript函数返回引用,并且没有规定用户定义的函数返回引用。

最后两句话让我印象深刻。有了这个,你可以做coolHostFn() = valuevalid syntax,顺便说一句)之类的事情。所以我的问题是:

是否存在定义导致Reference值的主机功能对象的EcmaScript实现?

1 个答案:

答案 0 :(得分:6)

谷歌Chrome的引擎非常适合这种方式。但是,您会在控制台中注意到执行以下操作时会得到ReferenceError: Invalid left-hand side in assignment

var myObj = new Object();
function myFunc() {
    myObj.test = "blah";
    return myObj;
}
myFunc() = new String("foobar");

然而,这是一个早期错误,并且因为v8的ECMAScript实现,如果它在假定引用错误之前正确执行myFunc,这应该可行。

那么,在v8的当前实现中?是和否。它默认实现(由于语言的结构),但是功能因不同的问题而停止。 coolHostFn() = value不应该返回错误,并且确实应该能够正确执行。但是3=4肯定会返回左侧分配错误。

不完全是你问题的答案,但我希望它有助于澄清为什么它不起作用。

(以下是问题/故障单,以防有人想要加入... http://code.google.com/p/v8/issues/detail?id=838