console.log((function(x, f = () => x) {
var x;
var y = x;
x = 2;
return [x, y, f()];
})(1));
几天前我从这里https://gist.github.com/DmitrySoshnikov/3928607cb8fdba42e712找到了这个有趣的难题
没有“严格”模式的答案是:[2,1,1]。尽管使用“严格”模式,但它是:[2,1,2]。
我不知道输出在js中以“ strict”模式如何变化。
请帮助。预先感谢。
我都为[2, 1, 1]
,如果您删除var x
,输出实际上会改变。例如:
console.log((function (x, f = () => x) {
var x
var y = x;
x = 2;
return [x, y, f()];
})(1));
// output [2, 1, 1]
console.log((function (x, f = () => x) {
var y = x;
x = 2;
return [x, y, f()];
})(1));
// output [2, 1, 2]