为什么这个函数里不管我把作用域参数改成什么都是弹出222?
高洛峰
高洛峰 2016-11-08 12:31:53
0
1
584

var bb=222;

function sum(num1 , num2){ return bb ; } var obj = { bb:1111, color: function callsum(){ var cc=sum.call(obj); //var cc=sum.call(this); console.log(cc); } }; aa.color();

本来想测试一下看sum.call里面的this是不是指向obj,
结果发现打印出的是222(指向window)
然后又把参数换成obj,结果还是222?真心搞不懂!
另外为什么call里的this指向的window?他不是在callsum里吗?
而callsum的执行坏境不是obj吗?
为什么会打印出222呢?
前端小白求dalao解答!在此谢过!

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

reply all (1)
三叔

this是this,作用域是作用域。call改变this,但不会改变作用域。你的sum函数里没有this,所以bb只是一个变量而已。

    Latest Downloads
    More>
    Web Effects
    Website Source Code
    Website Materials
    Front End Template
    About us Disclaimer Sitemap
    php.cn:Public welfare online PHP training,Help PHP learners grow quickly!