文字列と数字のブール
JavaScriptタイプは、割り当てに応じて対応するタイプに変換されます。
var str = ""; alert(typeof(str)); // stringstr =; alert(typeof(str)); // numbervar sum = str +; //+プログラム2つの番号をプログラムしてアラートを追加する(sum); //
これはより明白であり、値は一目で計算できます。ただし、次の変換をご覧ください
var sum = "" + ""; alert(typeof(sum)); // stringalert(sum); // var sum = "" +; alert(typeof(sum)); // stringalert(sum); // var sum = + ""; alert(typeof(sum)); // stringalert(typeof(sum)); // var div = ""/""; alert(typeof(領域)); // numberalert(typeof(sub)); // var sub = "" - ""; alert(typeof(sub)); // numberalert(sub); // var div = ""/""; alert(typeof(領域)); // numberalert(typeof(div)); // numberalert(div); //。
数値タイプと文字列タイプ「+」の場合、数字は文字列に直接変換されます
上記の「+」は非常に特別です。それが - 、 *、 /;次に、最後にどのタイプに変換されますか?
var area = "" * "a"; alert(typeof(area)); // numberalert(area); // nanvar sub = "a" - ""; alert(typeof(sub)); // nansub = "a" - ; alert(typeof(sub)); // nansub = "a" - ; alert(sub); (div)); // nandiv = "a"/; alert(typeof(div)); // nan
上記のように - 、 *、 /は数字の算術です。文字列と数字は計算を実行できないため、値はnanです。タイプ番号。
var a = true; alert(typeof(a)); // booleanvar b = "true"; var ab = a + b; alert(typeof(ab)); // stringalert(ab); // truetruealert(a == b); // false
ブールとストリングのブール型は、自動的に弦の「true」に変換されますが、なぜbはbに等しくないのですか
この例を見てみましょう。
var c = ""; alert(typeof(c)); // stringvar d =; alert(typeof(d)); // numberalert(c == d); // true
変換の原則はここに記載されています:(参考のため)
1.オペランドがブール値の場合、等式を比較する前に数値に変換します - falseは0に、1にtrue;
2。1つのオペランドが文字列であり、もう1つの演算子が数値である場合、文字列は平等を比較する前に数値に変換されます。
3. 1つのオペランドがオブジェクトであり、もう1つのオペランドがそうでない場合、オブジェクトの値()メソッドが呼び出され、取得した基本型値は以前のルールに従って比較されます。
次に、文字列とブールタイプを比較すると、次のようになります。
この変換は発生します:ブールトゥルーは最初にナンバー1に変換し、次に弦「1」に変換してから比較します。結果は偽でなければなりません。
NULLおよび文字列番号ブールの未定義
var a = null; alert(typeof(a)); // objectvar b = "hello"; var ab = a + b; alert(typeof(ab)); // stringalert(ab); // nullhellovar c =; var ac = a * c; alert(typeof(ac)); // numberAlert(ac); // if(a)// false {} else {alert( "false");} var u; alert(a == u); //真実与えられた例から、私たちは見ることができます:
nullは、文字列の文字列「null」に自動的に変換され、数値0を表します。これは、論理的判断におけるfalseと同等であり、値が表される場合に定義されていないと同じです。 ===の代わりに==に注意してください。
==比較時に比較タイプを変換しますが、その変数タイプは==のために変化しません。