javascript中的“严格”模式如何更改此代码的输出?

问题描述 投票:0回答:1
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”模式如何变化。

请帮助。预先感谢。

javascript output arrow-functions strict
1个回答
-1
投票

我都为[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]
© www.soinside.com 2019 - 2024. All rights reserved.