相关疑难解决方法(0)

在JavaScript中,为什么"0"等于false,但是当'if'测试时它本身并不是假的?

以下显示"0"在Javascript 中为false:

>>> "0" == false
true

>>> false == "0"
true
Run Code Online (Sandbox Code Playgroud)

那么为什么以下打印"ha"

>>> if ("0") console.log("ha")
ha
Run Code Online (Sandbox Code Playgroud)

javascript boolean

224
推荐指数
6
解决办法
16万
查看次数

为什么在JavaScript中制表符等于false?

我以为我知道==JavaScript中的怪癖以及所有奇怪的类型转换,但是今天我偶然发现了一件对我没有任何意义的事情:

'\t' == false
// => true
Run Code Online (Sandbox Code Playgroud)

这是为什么?

显然,'\t'它不是一个虚假的值,如果将其与预期值结合使用,||则:

'\t' || 42
// => '\t'
Run Code Online (Sandbox Code Playgroud)

另一方面,toString也未调用a false,请参见:

'\t' == 'false'
// => false
Run Code Online (Sandbox Code Playgroud)

这使我想到选项卡可能会转换为布尔值,但是:

Boolean('\t') == false
// => false
Run Code Online (Sandbox Code Playgroud)

所以,问题是:为什么呢?

javascript

40
推荐指数
1
解决办法
1364
查看次数

为什么if("string")将"string"评估为true,但if("string"== true)不是?

给出以下代码:

if ("string") {
    console.log('true!');
}
//logs "true" to the console
if ("string"==true) {
    console.log('true!');
}
//doesn't log anything
Run Code Online (Sandbox Code Playgroud)

为什么会这样?我以为"string"是被转换成一个数字,就像布尔一样.因此true变得1"string"NaN.第二个if语句有意义,但我不明白为什么第一个语句会导致内部循环被评估.这里发生了什么?

javascript

35
推荐指数
2
解决办法
2万
查看次数

在布尔到数字比较中的JavaScript真实性

我是JavaScript的新手,我正试图从互联网资源中学习它.虽然我知道,有很多将CR*P物质,有一点大多数人似乎都同意是事物在JS的感实性(只是为了给一个例子去这里)

现在我在实验中发现了这个奇怪的东西:

(true == 2)false.为什么?

据我所知,2是一个非零数字,所以它应该被评估为true.

javascript string boolean

5
推荐指数
1
解决办法
2867
查看次数

有效的错误值

将任何值转换为Booleanreturn falsetrue.例如:

> Boolean (false)
false
> Boolean (null)
false
> Boolean (undefined)
false
> Boolean ("")
false
Run Code Online (Sandbox Code Playgroud)

但是0很特别,因为它是一个数字.我认为是一个有效的假值:

> Boolean (0)
false
Run Code Online (Sandbox Code Playgroud)

还有其他有效的错误值吗?

javascript boolean

3
推荐指数
1
解决办法
395
查看次数

JavaScipt的数据类型转换究竟对"=="运算符有效吗?

我最近if( ... == true)在JavaScript中使用时发现了一些奇怪的东西.该==运营商应该尝试转换给定的数据类型是相同的.但有些情况似乎没有像我们预期的那样做:

if ( 42 == true ) // false ( Only 1 is true )
if ( "Hello World" == true ) // false ( false for any string )
Run Code Online (Sandbox Code Playgroud)

虽然如果我将它们自己转换!!成两者42并且"someString"结果是true:

if ( !!42 === true ) // Shows that 42 cast to a boolean is true.
if ( !!"Hello World" === true ) // Same for strings
Run Code Online (Sandbox Code Playgroud)

请注意,如果我切换它if( true == ... ),结果是相同的.我想知道这里到底发生了什么,为什么 …

javascript equality type-conversion

-2
推荐指数
1
解决办法
174
查看次数

标签 统计

javascript ×6

boolean ×3

equality ×1

string ×1

type-conversion ×1