我想写这样的东西(在Javascript中):
var obj = { left: left, right: -(left += increment) };
Run Code Online (Sandbox Code Playgroud)
如果我可以确定属性值将按照我编写的顺序进行评估,那么这只会做我想要的.语言是否在任何地方都有这样的保证?
ECMAScript程序的源文本首先转换为输入元素序列,这些元素是标记,行终止符,注释或空格.从左到右扫描源文本,重复地将尽可能长的字符序列作为下一个输入元素.
换句话说,是的,规范解决了这个问题.此代码应始终有效:
var left = 5, increment = 1;
var obj = { left: left, right: -(left += increment) };
// obj.left === 5
// obj.right === -6
Run Code Online (Sandbox Code Playgroud)
这与属性的顺序无关,因为它们存储在对象中,而是JavaScript将评估语句的顺序:从左到右,从上到下.
| 归档时间: |
|
| 查看次数: |
420 次 |
| 最近记录: |