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

标签 javascript variables

我有以下 if 子句:

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

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

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

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

最佳答案

您可以粘贴整个代码(方法调用)吗?我在 IE9、FF14 和 Chrome 23 中尝试了下面的代码,以及 if statemenet 永远不会被执行的代码,而 typeof b 分别被评估为未定义和对象,分别用于方法调用。

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执行环境

关于即使没有传递任何内容,JavaScript bool 变量也为 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13600483/

相关文章:

javascript - 通过给定的浏览器 URL 在启动时重定向

javascript - Ajax 将 php 变量作为参数传递给 javascript 函数

javascript - 发送 JSON stringify 到 PHP 如何读取它

java - 如何在两个不同的类文件中的方法外部使用公共(public)变量?

ruby - 单个哈希的多变量赋值

javascript - 重复数组

javascript - 将 json 文件加载到 Localstorage

javascript - 最新包含 Blink 的浏览器(如 Chrome、Opera)中的奇怪滚动行为

javascript - 使用 for 循环的动态 JavaScript 变量名称

javascript函数范围,变量声明