English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

jsでのbool値の変換および“&&”、“||”、“!!”の詳細な説明

前書き

まず知っておくべきことは、jsには6falseの値は、0、''、null、undefined、NaN、falseで、他はtrue(包括{}、[]、Infinity)です。

Boolean()関数を使用したり、二重否定を使用してオブジェクトのブール値を取得できます。例えば、Boolean(undefined)と!!undefinedもブール値falseを取得できます。

0、''、null、undefined、NaN、{}、[]、Infinityのブール値を求めると、それぞれfalse、false、false、false、false、true、true、trueです。

したがって、私たちが知っているのは、オブジェクトのブール値はtrueであり、{}でもあります。

bool値の変換

データ型 bool値の変換
undefined undefinedはfalseに変換されます。
Object nullはfalseに変換され、他はtrueになります。
Boolean falseはfalseに変換され、trueはtrueに変換されます。
Number 0、NaNはfalseに変換され、他はtrueになります。
String ""はfalseに変換され、他はtrueになります。

"&&"

javascriptにおける“&&”演算子の計算規則は以下の通りです:

&&の左側の表現が真値の場合、右側の表現の値を返します;そうでない場合、左側の表現の値を返します。複数の&&表現が一斉に計算される場合、最初にfalseの値を返します。すべての表現の計算結果がtrueの場合、最も右側の表現の計算結果を返します。

const aa = {'name': 'xx'};
const bb = aa && aa.age; // bb出力はundefinedです;
let cc;
const dd = cc && cc.name &63; cc.name : undefined; // ddの出力がundefinedです
const dd = cc && cc.name; // ddの出力がundefinedです

上記の2行のコードの実行結果は同じです。以前にコードを書いている際には上記の方法を使用していましたが、一部の単体テストがカバーされていないことが判明し、単体テストのブランチカバレッジが低いことが問題でした。以下の方法を使用することで、この問題を効果的に解決できます。これら2行の効果は同じです。

"||"

javascriptにおける「||」演算子の運算法則は以下の通りです:

「||」の左側の式の値が真値である場合、左側の式の値を返します。左側の式の値がすべてfalseの場合、最も右側の式の値を返します。

const aa = false || 'xx'; // aaの出力は'xx'です 

"!!"

"!!"は式を強制的にbool値に変換する演算子で、結果はtrueまたはfalseです。

const aa = 'xx';
const bb = !!aa; // bbの出力がtrueです
const cc = !!(NaN || undefined || null || 0 || '' ); // ccがfalseです

まとめ

これでこの記事のすべてが終わりました。本文の内容が皆様の学習や仕事に参考になることを願っています。何か疑問があれば、コメントを残して交流してください。呐喊チュートリアルのサポートに感謝します。

声明:本文の内容はインターネットから提供されています。著作権は原著者に帰属します。インターネットユーザーにより自発的に貢献し、自己でアップロードされた内容であり、本サイトは著作権を所有しておらず、編集は行われていません。著作権侵害が疑われる内容があれば、お問い合わせ先のメールアドレス(notice#w)にご連絡ください。3codebox.com(メールを送信する際、#を@に置き換えてください。届出を行い、関連する証拠を提供してください。一旦確認が取れれば、本サイトは侵害される可能性のあるコンテンツをすぐに削除します。)

基礎教程
おすすめ