検索

ホームページ  >  に質問  >  本文

为什么这个函数里不管我把作用域参数改成什么都是弹出222?

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解答!在此谢过!

高洛峰高洛峰2959日前648

全員に返信(1)返信します

  • 三叔

    三叔2016-11-08 12:32:08

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

    返事
    0
  • キャンセル返事