我对 JavaScript 中的一些概念有疑问,例如(truthy, true)和(falsy, false)。
我知道 1 的类型不是true,但问题是:为什么1 == true?
ECMAScript 将 1 或“ghsagh”视为 的主要原因是true什么?
我也无法理解truthyand的含义falsy。
这种考虑有什么好处?!
我对 JavaScript 中的一些概念有疑问,例如(truthy, true)和(falsy, false)。
我知道 1 的类型不是true,但问题是:为什么1 == true?
ECMAScript 将 1 或“ghsagh”视为 的主要原因是true什么?
我也无法理解truthyand的含义falsy。
这种考虑有什么好处?!
JavaScript 喜欢尽可能隐式地将值转换为其他类型。因此,在将布尔值与其他类型的变量进行比较时,JavaScript 使用与旧编程语言相同的逻辑。表示空、null 或零(例如 0 或“”)的值评估为 false,而任何其他值(例如 1、5、-19、“ghsfsah”或其他有意义的内容)评估为 true。
为什么这样做?对于一个人来说,它允许开发人员在检查变量是否有内容时使用一个小快捷方式。例如,如果用户没有在文本字段中输入,我们可以轻松检查字段是否为空并提示用户。
if ( !textfield.value ) {
alert( "Please enter something in the text box" );
}
如果您需要查看某事实际上是true或false,您可以使用===.
JavaScript 对所需的值类型非常灵活。如果 JavaScript 想要一个布尔值,它会将你给它的任何值转换为布尔值。
一些值(“真”值)转换为真,而其他(“假”值)转换为假。
以下值转换为 false,因此工作方式类似于 false:
所有其他值,包括所有对象(和数组)都转换为 true 并像这样工作。
例如,假设变量o包含一个对象或值null。您可以使用如下 if 语句显式测试 o 是否为非空:
if (o !== null){
....
}
严格不等于运算符!==比较o并null评估为真或假。但是你可以省略比较,而是依赖于null虚假和对象是真实的事实:
if (o){
....
}
在第一种情况下, if 的主体将仅在ois not时执行null。因此,即使 o 设置为 ,代码块也会执行undefined。
第二种情况不太严格:它将执行 if only if ois notfalse或任何假值(例如nullor undefined)的主体。哪个 if 语句适合您的程序实际上取决于您期望分配给的值o。如果你需要区分null和0“”,那么你应该使用显式比较。