javascript - 这道js题中this指向的问题

查看:96
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆