为什么getValue()得出的是123?

    var getValue,setValue;
    (function(){
      var secret=0;
      getValue=function(){
        return secret;
      };
      setValue=function(v){
        if(typeof v==="number"){
          secret=v;
      }
    };
  }());
  
  getValue();//0
  
  setValue(123);
  getValue();//123
        
  setValue(false);
  getValue();//123
阅读 2.5k
2 个回答

getValue()setValue()闭包, 共享一个变量 secret, 所以在setValue函数中更改了secret,getValue()读取secret当然会随之改变.

推荐问题