javascript - 面试测试关于javascript中的闭包?

标签 javascript closures

这是一道面试题!我也不知道其中的原因!

function fun(val) {
  this.x = val;
  return this;
}

var x = fun(1);
var y = fun(2);

console.log(x.x); //I can't understand this result.
console.log(y.x);

最佳答案

嗯,我认为发生这种情况是因为 fun 函数中的“This”指的是 Window 对象,而不是函数内的本地对象。因此,您首先通过 fun(1) 调用它并使 window.x = 1,然后通过 fun(2) 调用它,它变为 window.x = 2 .. 然后当 x 和 y 都为对 window 的引用...因此两者将具有相同的最终值。

关于javascript - 面试测试关于javascript中的闭包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44762364/

相关文章:

javascript - webpack 2 无法解析空扩展

javascript - greasemonkey 用户脚本中的 jQuery.getJSON

javascript - 在确认对话框中单击 'OK' 后如何停止功能?

JavaScript for 循环闭包问题

Javascript - 使用参数引用全局函数的匿名函数中的闭包 - 如何使用 PreventDefault?

c# - 什么时候使用闭包?

Swift - 使用闭包的代码使用给定代码查找两个数字的总和

javascript - 如何在单击按钮时切换隐藏/显示具有相同类名的所有元素

ios - 错误 : Assigning non-escaping parameter 'publicationQuery' to an @escaping closure

javascript - Mootools 在 for 循环上设置事件