我有以下 if 子句:
if(trackingEnabled && tracking) {
// do something
}
这两个变量都是函数参数。在某些情况下,tracking
变量被设置为布尔值,在某些情况下不是。
如果我查找变量的类型(在我不传递值的情况下),那么它是一个简单的对象。
我现在的问题是,当我没有向函数传递任何内容时,为什么跟踪变量被解释为布尔值(值为真)?
我有以下 if 子句:
if(trackingEnabled && tracking) {
// do something
}
这两个变量都是函数参数。在某些情况下,tracking
变量被设置为布尔值,在某些情况下不是。
如果我查找变量的类型(在我不传递值的情况下),那么它是一个简单的对象。
我现在的问题是,当我没有向函数传递任何内容时,为什么跟踪变量被解释为布尔值(值为真)?
你能粘贴整个代码(方法调用)。我在 IE9、FF14 和 Chrome 23 中尝试了下面的代码,以及 if 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 执行环境