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