[英]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
預期的true
或false
(在此示例中預期為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.