可以使用函数';s的返回值在JavaScript中是否为左值?

可以使用函数';s的返回值在JavaScript中是否为左值?,javascript,jscript,lvalue,Javascript,Jscript,Lvalue,Microsoft允许使用以下语法在JScript中设置环境变量: var sh = WScript.CreateObject("Wscript.Shell"); var env = sh.Environment("PROCESS"); env("TEST") = "testvalue"; 我想知道第三行是什么——对我来说是JSLint,它称这一行为“糟糕的助手” 但它是有效的 将函数的返回值作为左值(如此处所示)是否与ECMAscript标准兼容 如果是:如何编写这样的函数?是的,标准允许函

Microsoft允许使用以下语法在JScript中设置环境变量:

var sh = WScript.CreateObject("Wscript.Shell");
var env = sh.Environment("PROCESS");
env("TEST") = "testvalue";
我想知道第三行是什么——对我来说是JSLint,它称这一行为“糟糕的助手”

但它是有效的

将函数的返回值作为左值(如此处所示)是否与ECMAscript标准兼容


如果是:如何编写这样的函数?

是的,标准允许函数返回引用。不,您不能用Javascript编写这样的函数

赋值的左操作数应产生引用。允许函数调用返回引用。这种可能性完全是为了主机对象而允许的。本规范定义的任何内置ECMAScript函数都不会返回引用,用户定义的函数也不会返回引用


但您可以做的是设置对象的属性,将返回的引用点设置为
ret(“sth”)。someProp=“sth”
这很快,正是我想要的答案。谢谢。@C5H8NNaO4:这并不意味着
ret()
返回引用。引用是一对
[base,prop]
函数只计算基本部分。@thg435是的,我的意思是像
var someObjs=[{a:,someProp:'b}]这样的东西;(函数(a){returnsomeobjs[a]})(0.someProp=“c”;console.log(someObjs[0].someProp)//c
@C5H8NNaO4:但是,您在那里的IEFE返回
{a:,someProp:'b}
对象,然后在该对象上设置属性,它不会返回引用。酷!请把这个片段(连同官方文件的链接)作为我的答案