【发布时间】:2014-03-29 17:57:33
【问题描述】:
我正在编写一个使用 switch 语句的脚本。当我声明变量时,它们的默认布尔值为 true,对吗?好吧,在 switch 语句中使用时并没有那么多。
这是我的 JavaScript: http://codepen.io/anon/pen/IDLqd/
基本上,我想做的是根据输入到 window.prompt() 方法中的数据询问用户他们喜欢哪种类型的列表样式。如果他们输入 1、2 或 3,他们将根据提示中的指示获得一个列表。但是,如果他们没有输入有效整数,则变量 validInput 将设置为布尔值 false。
从这里开始,运行一个 if 语句来检查 validInput 变量是否具有布尔值 true,如果是,则将许多变量的值输出到屏幕,如果不是,则输出文本“无效”选择”。
为什么代码会在 if 语句中将 validInput 识别为仅具有 false 值?如果在提示窗口中输入不同的值,则仅为其分配值 false ?为了让这个程序正常运行,我必须在每个 switch case 中明确地将 validInput 值定义为 true。
这是为什么?有人可以解释一下吗?
谢谢! 亚伦
【问题讨论】:
-
已声明但未设置的变量默认为
undefined,即“假”,即undefined == false、undefined != true,但实际上并非假,即undefined !== false、undefined !== true。 -
这不是因为在您的情况下执行将转到默认值并将validinput设置为false,因为它没有事先初始化?
-
顺便说一句,您在声明中使用了逗号和多个
vars;选择一种风格或另一种风格,你不能同时使用这两种风格。 -
undefined == null但undefined !== null。未定义的字面意思是;它没有被定义为任何东西。而 null 是一种空白对象(如果您有 C 或 Java 背景,这更有意义)。在 JavaScript 中,这种区别并不是真正必要的,但在检查哪些参数被发送到函数时可能很有用。只要记住undefined、null、false、0和''都是“假”的(还有一堆像'0'这样的字符串),但它们都是不同的。 -
不,您不需要 将所有变量显式设置为某个值。如果您对默认的
undefined(有时还可以)感到满意,那么只需var a;语句就足够了。请记住,它真的更像var a = undefined;
标签: javascript switch-statement