簡體   English   中英

javascript和(&&)運算符未按預期工作

[英]javascript and (&&) operator not working as expected

我需要檢查字符串是否等於定義的值和對象是否具有hash鍵。

我對此非常困惑:

var my_string = 'some_string';
var my_obj = {'hash':'4010f89a05c236cd4f3a5c7558af0e70dc4216454d2d5155a285bfbad752ce51f9510272821a254'}
console.log((my_string == 'some_string' && my_obj['hash']));

返回4010f89a05c236cd4f3a5c7558af0e70dc4216454d2d5155a285bfbad752ce51f9510272821a254

預期的truefalse (在此示例中預期為true )。

它工作正常。

(my_string == 'some_string' && my_obj['hash'])等於"4010f89a05c236cd4f3a5c755..." ,這是真的。 例如,這可以在if語句中用作條件。

您也可以將其轉換為實際的布爾值:

!!(my_string == 'some_string' && my_obj['hash'])

一種選擇是使用in運算符來檢查對象中是否存在特定鍵。 我更喜歡這種方法,因為JavaScript有一些非常糟糕的值被認為是假的,比如0

console.log((my_string == 'some_string' && ('hash' in my_obj)));

&&運算符返回&&右側的任何值,只要兩個值都為真,如下所示:

 const foo = 'foo'; const bar = 'bar'; const foobar = foo && bar; console.log(foobar); 

然后,返回的結果將作為if語句的結果強制轉換為true。 重要的是要意識到if語句將值強制轉換為布爾值而&&語句不強制轉換為布爾值。

&&不會每次都返回布爾值。

當您使用&& with string時,如果兩者都為true,則返回第二個值。 當你使用|| 如果兩者都為true,則返回第一個值。

let one = "Cat" && "Dog"     
let zwo = "Cat" || "Apple"   

一個回歸狗。 兩個回歸Cat

您可以使用三元運算並使其返回true或false。

像這樣:

console.log(   (my_string == 'some_string' && my_obj['hash'])   ? true : false );

更多信息:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM