回答
他們並不相等。
if (x)
檢查是否x
是Truthy其中作爲後檢查的x
布爾值是true
。
例如,
var x = {};
if (x) {
console.log("Truthy");
}
if (x == true) {
console.log("Equal to true");
}
不僅一個對象,任何字符串(除了空字符串),任何數量的(除0
(因爲0
是Falsy)和1
)將被視爲Truthy,但它們將不等於真實。
作爲每ECMA 5.1 Standards,在if (x)
,的x
感實性將是決定,如下表
+-----------------------------------------------------------------------+
| Argument Type | Result |
|:--------------|------------------------------------------------------:|
| Undefined | false |
|---------------|-------------------------------------------------------|
| Null | false |
|---------------|-------------------------------------------------------|
| Boolean | The result equals the input argument (no conversion). |
|---------------|-------------------------------------------------------|
| Number | The result is false if the argument is +0, −0, or NaN;|
| | otherwise the result is true. |
|---------------|-------------------------------------------------------|
| String | The result is false if the argument is the empty |
| | String (its length is zero); otherwise the result is |
| | true. |
|---------------|-------------------------------------------------------|
| Object | true |
+-----------------------------------------------------------------------+
注每:最後一行object
,其中包括兩個對象和陣列。
但是在後一種情況下,按照The Abstract Equality Comparison Algorithm,的x
If Type(x) is Boolean, return the result of the comparison ToNumber(x) == y.
If Type(y) is Boolean, return the result of the comparison x == ToNumber(y).
值將被轉換爲一個數字,該數字將針對true
進行檢查。
注:
在JavaScript中,true
是1
和false
是0
。
console.log(1 == true);
# true
console.log(0 == false);
# true
意思是說,後面的一個可以使用字符串,int其他的布爾值嗎? –
'var x ='a'; (x)alert(「X」); if(x == true)alert(「X true」);'This will only alert'「X」'not not「X true」 – peirix
1被認爲是真的(來自ECMA 5.1:如果參數爲false是+0,-0或NaN;否則結果爲真) –
在第一種形式(例如空字符串,0,undefined,null)中,幾種情況的計算結果爲false。
如果你想更語義一下了一下,嘗試在表達的前棒棒:
if(!!x){...}
這將表達式的結果轉換爲truthy語義表示相同。這更接近的類似物的表達你描述(x == true)
另外要注意,==
是值comparions與類型強制,例如"3" == 3
,而===
斷言等於打字太。
所以他們是不一樣的,但經常在邏輯上代表相同的測試,這要歸功於語言的語義和!您可以使用
謝謝。是「if(!! x)」總是等於「if(x)」? – TheZver
不,想象這種情況下,如果(!!「hello」)和if(「hello」== true),第一個表達式將評估爲true,因爲「hello」不是空字符串,undefined或null等等,所以當轉換爲真實,真實。而第二個表達式將是錯誤的,因爲「hello」不能被強制等於真值。 http://jsfiddle.net/CEtN5/ – ComethTheNerd
對不起,我在這個問題上有一個錯誤。我的意思是比較if(x) – TheZver
- 1. 有條件的「if(x)」不同於「if(x == true)」嗎?
- 2. if(something)vs if(something === true)
- 3. PHP IF((X)||(X && Y))聲明
- 4. Javascript If If not Evaluating True
- 5. Python中的if bool(x)`和if x`有什麼區別嗎?
- 6. 關於條件if session = x
- 7. 更短的寫法if(x == 1 || x == 5 || x == 7 || x == 22)
- 8. 爲什麼if(++ x = ++ y)有效,if(x ++ = ++ y)不起作用?
- 9. 在Python中,哪個'if x:`或`if x!= 0:`是首選的?
- 10. PHP if語句「if X and/or Y」
- 11. 如何在JavaScript中編寫「if X or If Y AND Z」?
- 12. if [[x]!= x]在bash中做什麼?
- 13. 替代if(x> = 200 && x <= 299)?
- 14. Ruby中的「return x if x」的速記
- 15. jQuery if(x == y)not working
- 16. if..else vs if(){return}
- 17. javaScript中if(x> y){x = y}的速記
- 18. Javascript成語:if(x === + x)是做什麼用的?
- 19. if-else vs if-else-if-else
- 20. Handlebars IF值包含x。*
- 21. jQuery show div if value> x
- 22. if raw_input(includes)x,then print y
- 23. 如果bool x = FALSE,我該如何強制if(x)評估爲TRUE?
- 24. PHP:while if if if語句爲true
- 25. Javascript if if
- 26. If Button1.Click = true
- 27. if statement returns true
- 28. IF Statement Always True
- 29. C++中if(x^1!= 1)和if(int(x^1)!= 1)有什麼區別?
- 30. (count!= null)vs if(!count)in javascript
嘗試'x ='test'',作爲示例。 – VisioN
'x =''','x = []','x ='\ n'','x ='false'' ... – nderscore