What is the shortest possible way to write a block scope in JavaScript? -
is shortest possible way block scope in body of for
loop?
x = {}; (i of ['a', 'b']) { (function(i) { x[i] = function() { this.v = i; } })(i); }
or there syntactic sugar not able find?
explanation:
with block scope created objects have different values.
new x.a
⟹ x.(anonymous function) {v: "a"}
new x.b
⟹ x.(anonymous function) {v: "b"}
without block scope
y = {}; (i of ['a', 'b']) { y[i] = function() { this.v = i; } }
the created objects have same value.
new y.a
⟹ y.(anonymous function) {v: "b"}
new y.b
⟹ y.(anonymous function) {v: "b"}
given using es6 for of
loop, have block scope iteration variable anyway - don't forget use let
/const
declaration! there no need iefe.
let x = {}; (let of ['a', 'b']) x[i] = function() { this.v = i; };
if don't use es6, i'd recommend use 1 of array
iteration methods, like
var x = ['a', 'b'].map(function(i) { return function() { this.v = i; }; });
Comments
Post a Comment