默认情况下,什么是JavaScript变量的布尔值?

时间:2014-03-29 17:57:33

标签: javascript switch-statement

我正在编写一个使用switch语句的脚本。当我声明变量时,它们的默认布尔值为true,对吗?好吧,当用在switch语句中时,并没有那么多。

以下是我的JavaScript: http://codepen.io/anon/pen/IDLqd/

基本上,我要做的是根据输入window.prompt()方法的数据询问用户他们喜欢哪种类型的列表样式。如果他们输入1,2或3,他们将根据提示中的指示获得一个列表。但是,如果它们没有输入有效的整数,则变量validInput的布尔值设置为false。

从这里开始运行if语句来检查validInput变量是否具有布尔值true,如果是,则将多个变量的值输出到屏幕,如果不是,则输出文本“无效”选择。”

为什么代码会将validInput识别为在if语句中只有false值?如果在提示窗口中输入不同的值,则仅为其指定值false?为了使这个程序正常运行,我必须在每个switch案例中明确地将validInput值定义为true。

这是为什么?有人可以解释一下吗?

谢谢! 亚伦

2 个答案:

答案 0 :(得分:3)

Javascript是一种动态语言,没有像默认的布尔值

当你定义一个没有值的变量时,它的默认值总是undefined

var variable; // variable is undefined

所以你必须设置值

var variable = true;
// or
var variable = false;

如果要切换此布尔值,可以执行以下操作:

variable = !variable;

答案 1 :(得分:2)

您正在检查输入是否有效

if (validInput == true) {
  // Your code
}

更常见的方法是

if (validInput) {
  // Your code
}

这两者之间有什么区别?

首先检查validInput是否等于true - 其他任何事情都没有(好吧,几乎没有别的 - 你使用的是==而不是===,由于javascript的类型转换算法,它有时会产生令人惊讶的结果,但这完全是另一个问题。)

要理解第二个,你需要理解javascript的“真实性”概念。如果你把一个值放在if语句的条件中,那么javascript决定它是“truth-y”还是“false-y”,并相应地采取行动。

true是真实的,任何非零数字,任何非空字符串和任何对象都是真实的。其他事情是假的,包括false0""nullundefined

最后一个可能与您最相关,因为变量为undefined,直到您将它们设置为某些内容。