前端面试题:企业面试真题—11
2020-08-21 13:30
826 查看
[code]var x = 20; var a = { x : 15, fn : function(){ var x = 30; return function(){ return this.x; } } }; console.log(a.fn()); //function(){ return this.x; } console.log((a.fn())()); //20 console.log(a.fn()()); //20 console.log(a.fn()() == (a.fn())()); //true console.log(a.fn().call(this)); //20 console.log(a.fn().call(a)); //15
解析
[code]var x = 20; var a = { x : 15, fn : function(){ var x = 30; return function(){ return this.x; } } }; console.log(a.fn()); //该函数返回值就是一个函数, 打印结果function(){ return this.x; } console.log((a.fn())()); //就是把第一行得到的函数调用了, 相当于匿名函数直接调用,this指向window,那么x等于20 console.log(a.fn()()); //跟上面一行没有区别,就是少了括号,并没有影响执行顺序 console.log(a.fn()() == (a.fn())()); //跟上面的一样, 两次的执行结果相同 console.log(a.fn().call(this)); //利用call来调用这个匿名函数, 由于全局的this指向window,相当于call(window),最终结果还是20 console.log(a.fn().call(a)); //call方法将this指向了a对象,最终this.x就是a.x,结果是15
相关文章推荐
- 前端面试题:企业面试真题—8
- 前端面试题:企业面试真题—9
- 前端面试题:企业面试真题—10
- 前端面试题:企业面试真题—3
- 前端面试题:企业面试真题—2
- 前端面试题:企业面试真题—1
- 前端面试题:企业面试真题—4
- 前端面试题:企业面试真题—5
- 前端面试题:企业面试真题—6
- 前端面试题:企业面试真题—7
- NET面试题大全,包括微软、华为、中兴等大企业的面试真题(连载)
- 大数据开发面试题-企业面试真题【连载】
- .NET面试题大全,包括微软、华为、中兴等大企业的面试真题
- 亲历腾讯WEB前端开发三轮面试经历及面试题
- 前端面试:精选经典面试题(十二)
- 前端面试:精选经典面试题(十八)
- 前端面试:精选经典面试题(六十三)
- 前端面试:精选经典面试题(三十二)
- Python企业面试真题
- Java面试题之精选最常见的面试真题 上