为什么我总是遇到'false'值?

问题描述 投票:2回答:1

我在testFun.js中有一个函数

var testFunc=function{

   var hasCar=false;

   return{
      checkCar: function(){
           for(var i=0; i<5; i++){
               MyCar.check(hasCar); //defined in following MyCar.js
           }
      }
   }

}();

MyCar.js

中的另一个函数
var MyCar=function(){
     var createCar=function(){
            //Create a car 
            //var car = new Car();
     }
     return{
         check: function(hasCar){

              console.log(hasCar); //PROBLEM HERE: fierBug console output is "false" always even CHECK_BUTTON has been clicked, why?

              var handler=function(){
                  if(!hasCar)
                      createCar();
                      hasCar=true;
               }
               //CHECK_BUTTON is a button on UI
               CHECK_BUTTON.click(handler);
         }
     }
}();

如您在MyCar

模块模式中看到的,单击CHECK_BUTTON时,我将调用createCar()函数,并将hasCar值从false
更改为true

hasCartestFunc模块模式中定义,并传递给MyCar.check(hascar)

我在MyCar.check()函数中有一个fireBug控制台输出,我希望当鼠标单击CHECK_BUTTON时,控制台输出为true,但是我总是得到false

,为什么?我使用hasCar来检查是否单击过CHECK_BUTTON,但是如果它始终保持false值,则无法知道。如何摆脱这个?

我在testFun.js中有一个函数var testFunc = function {var hasCar = false; return {checkCar:function(){for(var i = 0; i <5; i ++){MyCar.check(hasCar); // ...

javascript jquery dom-events javascript-framework
1个回答
5
投票

原始值传递按值

不按引用传递
© www.soinside.com 2019 - 2024. All rights reserved.