javascript:函数中的null变量改变了它的值?

时间:2013-09-27 07:47:05

标签: javascript

函数中的null变量是否可以变为空?当f进入函数链F时,它会以某种方式改变它的值?它不再是空的了。

function TestF(){}

TestF.prototype = {
    i: 0,
    f: null,
    chainF: function(g){
        if(this.f == null)
            console.log('f is null');
        var newF = function(){
            if(this.f == null)
                console.log('f is null');
                g();
        };
    this.f = newF;
    return this;
    }
}

t = new TestF();
t.chainF(function(){console.log('g')}).f();

输出:     f为空(仅一次)     克

1 个答案:

答案 0 :(得分:1)

当调用chainF时,它会进入第一个if和outputs

  

f为空

,然后将t.f分配给newF函数。

之后t.f在同一个对象上被调用(现在是newF),因此t.f不为空。 接下来要做的就是调用g(),输出

  

可能误解的是,当您声明newF函数时,您也认为代码已执行。事实并非如此,该功能已分配给newF,并在调用时运行(newF()t.f())。电话是在这一行完成的:

t
  .chainF(function(){console.log('g')})
  .f();                                   // here