【发布时间】:2015-11-01 14:54:23
【问题描述】:
这是在for 循环体中获取块作用域的最短方法吗?
x = {};
for (i of ['a', 'b']) {
(function(i) {
x[i] = function() { this.v = i; }
})(i);
}
或者有没有我找不到的语法糖?
解释:
使用块作用域,创建的对象具有不同的值。
new x.a ⟹ x.(anonymous function) {v: "a"}new x.b ⟹ x.(anonymous function) {v: "b"}
没有块作用域
y = {};
for (i of ['a', 'b']) {
y[i] = function() { this.v = i; }
}
创建的对象将具有相同的值。
new y.a ⟹ y.(anonymous function) {v: "b"}new y.b ⟹ y.(anonymous function) {v: "b"}
【问题讨论】:
-
看你是否愿意使用 ES6...
标签: javascript scope