即使没有传递任何内容,JavaScript布尔变量也为true

时间:2012-11-28 08:04:37

标签: javascript variables

我有以下if子句:

if(trackingEnabled && tracking) {
  // do something
}

两个变量都是函数参数。在某些情况下,tracking变量设置为布尔值,在某些情况下不是。

如果我查找变量的类型(在我没有传递值的情况下),那么它就是一个简单的对象。

现在我的问题是,当我没有向函数传递任何内容时,为什么跟踪变量被解释为布尔值(值为true)?

1 个答案:

答案 0 :(得分:2)

可以粘贴整个代码(方法调用)。我在IE9,FF14和Chrome 23中尝试了下面的代码,如果statemenet永远不会被执行,则代码在里面,而typeof b分别被评估为undefined和object,方法调用。

function f(a,b){
 console.log("Type of b is " + typeof b);
 if(a && b){
     console.log(a);
     console.log(typeof a);
     console.log(b);
     console.log(typeof b);
 }
}
f(true);
f(true,null);

我看到两个可能的原因

1)你在函数中传递了一些东西

2)你有一些奇怪的Javascript执行环境