簡體   English   中英

為什么此代碼無法按預期工作?

[英]why this code is not working as expected?

let x;
console.log("shubham" == true );  // gives false
"shubham" ? x=2 : x=3;
console.log(x); // gives 2, so "shubham" must be true?  

//我希望獲得價值3

當您使用此:

"shubham" == true

在比較之前,true變為1,所以實際比較是

"shubham" == 1

因此,它給出了錯誤;

這本書:

執行轉換時,相等和不相等的運算符遵循以下基本規則:

如果操作數是布爾值,請在檢查是否相等之前將其轉換為數字值。 值false轉換為0,而值true轉換為1。

如果一個操作數是一個字符串,另一個是數字,請在檢查是否相等之前嘗試將字符串轉換為數字。

當您使用此:

"shubham" ? x=2 : x=3;

像:

Boolean("shubham")?x=2:x=3

因此,它給你x = 2;

這本書:

variable = boolean_expression ? true_value : false_value;

這基本上允許根據boolean_expression的求值條件地分配變量。 如果為true,則將true_value分配給該變量;否則為false。 如果為假,則將false_value分配給變量。

這本書:

適用於Web開發人員的專業JavaScript.2012年1月第三版

是的,這是由於Java語言中“ if”語句后面的基礎代碼。 它依賴於“ ToBoolean”方法,該方法將if語句的條件轉換為布爾值。 任何不為空的字符串都將轉換為true。 因此,為什么要獲得上述邏輯。

暫無
暫無

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

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