一段js代码,为什么会输出这个结果?
var length = 10;
function fn() {
console.log(this.length);
}
var obj = {
method: function(fn) {
fn();
arguments[0]();
}
};
obj.method(fn, 1);
第一个输出10,因为fn声明时的上下文是window,所以打印全局变量10,第二个输出2为什么了,有确切的分析吗,这时候fn的上下文怎么变成arguments的上下文的?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
属性运算符有两种 . 和 []
obj.fn() === obj['fn']()
使用运算符调用属性的时候,自动绑定this
这就是为什么 arguments变为this的原因。
不加"use strict"的下场就是如此???