0xc*_*0de 0 javascript return-value assignment-operator
var foo, bar;
if (foo = true) {
console.log('I am so true!');
}
if (bar = false) {
console.log('Why am I not being logged?');
}
Run Code Online (Sandbox Code Playgroud)
同样在JavaScript控制台上,当我这样做时
var test;
test = 'I will be printed'
Run Code Online (Sandbox Code Playgroud)
字符串将被打印/返回.
在JavaScript中,赋值操作返回指定的值.这种行为是根据ECMAScript标准还是只是实施?这种行为与其他语言不同c,这有什么意图吗?如果有,那是什么?
在JavaScript中,赋值操作返回什么?
分配的值,即表达式的右侧.
上述行为是根据ECMAScript标准还是只是实现?
它在规范的§11.13.1中定义:
生产
AssignmentExpression : LeftHandSideExpression = AssignmentExpression评估如下:1.让lref成为评估LeftHandSideExpression的结果.
2.让rref成为评估AssignmentExpression的结果.
让rval成为
GetValue(rref).[...]
6.返回rval.
为什么这种行为与c之类的其他语言不同,这背后是否有任何意图?
我不知道它在C中是怎么回事,但是如果你问某些设计决策的原因,你应该联系JavaScript的创建者Brendan Eich.
FWIW,你可以在其他语言中找到相同的行为,比如PHP和Python(这些是我确定的,我认为 Java的工作方式也是一样).
| 归档时间: |
|
| 查看次数: |
70 次 |
| 最近记录: |