javascript - 这道js题中this指向的问题
本文介绍了javascript - 这道js题中this指向的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
var a=10;
var foo={
a:20,
bar:function(){
var a=30;
return this.a;
}
}
foo.bar()
//20
(foo.bar)()
//20
(foo.bar=foo.bar)()
//10
(foo.bar,foo.bar)()
//10
最后两个this为什么指向window
解决方案
1.foo.bar=foo.bar的返回值是foo.bar的值。
赋值语句的返回值就是赋值的值。
所以 (foo.bar=foo.bar)()等同(function(){var a=30;return this.a;})()对函数的直接调用this是window。
2.(foo.bar,foo.bar)()
逗号运算符,它将先计算左边的参数,再计算右边的参数值。然后返回最右边参数的值。然后同1。
这篇关于javascript - 这道js题中this指向的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文