まず、最初にいくつかの質問をしましょう!統一するために、これらの質問を混ぜません。インタビューの質問では、私はしばしばこれらの質問を混ぜ合わせます。これにより、あなたはより混乱します。デモンストレーションに便利にするために、ここでモジュールにいくつかの質問を書きましたので、読むことができます!
オペレーター文字列の暗黙の変換
乗算
console.dir( "-------------------------"); console.dir(5*"5"); console.dir(5*"a"); console.dir(5*nan); console.dir(5*null); console.dir(5*未定義); console.dir(5*5); console.dir("-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------分割
console.dir( "---------------------"); console.dir(5/"5"); console.dir(5/"a"); console.dir(5/nan); console.dir(5/null); console.dir(null/5); console.dir(5/undefined); console.dir(5/5); console.dir(5/0); console.dir(0/5); console.dir(0/0); console.dir( "-----------------------"); console.dir( "-------------------------------");
残りを取り、モデルを見つけます
console.dir( "-------------------------"); console.dir(16% "5"); console.dir(5% "a"); console.dir(5%nan); console.dir(5%null); console.dir(null%5); console.dir(5%未定義); console.dir(5%5); console.dir(5%0); console.dir(0%5); console.dir(0%0); console.dir("----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------追加
console.dir( "----------------------"); console.dir(16+ "5"); console.dir(5+ "a"); console.dir(5+nan); console.dir(5+null); console.dir(5+undefined); console.dir(5+5); Console.dir( "2つの数値の合計は"+5+5); console.dir( "2つの数値の合計は"+(5+5)); console.dir("-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------減算
console.dir( "---------------------"); console.dir(16- "5"); console.dir(5- "a"); console.dir(5-nan); console.dir(5-null); console.dir(5未定義); console.dir(5-5); console.dir(5-true); console.dir(5- "true); console.dir(5-" "); console.dir(" 2つの数字の差は "+5-5); console.dir(" 2つの数字の差は "+(5-5)); console.dir(" --------------- "); console.dir(" ----------------- "); console.dir("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------リレーショナル演算子
console.dir( "-------------------"); console.dir(16> "5"); console.dir( "16"> "5"); console.dir(5 <"a"); console.dir(5> = nan); console.dir(5 <nan); console.dir(nan> = nan); console.dir(5> = null); console.dir(5> = undefined); console.dir(5> = 5); console.dir(5> = true); console.dir(5> = "true"); console.dir(5> = ""); console.dir( "brick"> "alphabet"); console.dir( "brick"> "alphabet"); console.dir( "----------------------");
乗算
console.dir(5*"5"); // 25 Console.Dir(5*"a"); // nan Console.dir(5*nan); // nan Console.dir(5*null); 0 Console.dir(5*undefined); // nan Console.dir(5*5); // 25
乗算の暗黙的な変換の原則について話しましょう。
1. 2つの値がすべて番号の場合、乗算操作を直接実行します。 (私は誰もが小学校の数学のようにそれをすることができると信じており、あなたは数字のシンボルに注意を払うべきです)。製品値がECMAScriptの数値表現範囲を超える場合、無限(正の無限)または-infinity(負の無限)を返します
2。数字がnanの場合、結果はnanです
3。無限に0を掛けた場合、結果はnanになります
4. 1つの演算子が数値であり、もう1つのオペレーターが数値でない場合、最初に数値()関数を使用してそれを変換し、変換された値に数値を掛けます。変換された結果がNANに表示される場合、結果はNANです。
分割
console.dir(5/"5"); // 1文字を数字に変換し、console.dir(5/"a"); // nan console.dir(5/nan); // nan console.dir(5/null); 0/5は0 console.dir(5/未定義);
分裂の暗黙の変換の原則について話しましょう:
乗算と同様に、もう1つは0/0の結果がnanであることです
残りを取り、モデルを見つけます
プロジェクトで使用する最も一般的なことは、奇妙な数字や偶数を見つけることです。多くの場合、バランスを計算するために2の数字を使用します。結果が0の場合、数値は偶数であり、結果が1の場合、数は奇数です。
上記のトピックをご覧ください:
console.dir(16% "5"); // 1文字列5から5を介して番号()を変換し、残りのConsole.dir(5% "a")を計算します。 // nan Console.dir(5%nan); // nan Console.dir(5%null); // nanはnullをnult()から変換し、結果は0です。次に5%0を計算し、結果はnan console.dir(null%5)です。 // 0上記の0%5と同じ、結果は0 console.dir(5%未定義)です。 // nan Console.dir(5%5); // 0 Console.Dir(5%0); // nan Console.dir(0%5); // 0 console.dir(0%0); // nanconsole.dir(infinity%infinity); // nanconsole.dir(5%infinity); // 5 console.dir(infinity%5); // nan
残差の暗黙的な変換の原則について話しましょう:
乗算のように、何か特別なことについて話させてください!私たちは皆、小学校で学んだ配当と除数の概念を知っています。
1.配当は無限であり、配当は有限の値であるため、結果はnanになります
2。除数は有限値であり、除数は0で、結果はnanになります
3。Infinity%Infinityの結果はNANです
4.配当は有限の値であり、配当は無限の値であり、結果は除数です。
5。分割数は0、結果は0です
減算
上記の例を見てください!
console.dir(16- "5"); // 11 Console.dir(5- "a"); // nan Console.dir(5-nan); // nan console.dir(5-null); // 5 Console.dir(5-ununefined); // Nan Console.dir(5-5); // 0 Console.dir(5-true); console.dir(5- "true"); // nan console.dir(5- ""); // 5 Console.dir(5-infinity); //-infinity Console.dir(Infinity-infinity); // nan Console.dir( "2つの数字間の差は"+5-5);数字は0です
減算の暗黙的な変換の原則について話しましょう:
上記のように、私は同じことについて話しません。ユニークな減算について話します。
1。無限の結果の結果はnanです
2。-infinity -infinityの結果はinfinityです
3.数を引いた無限の結果は - 無限です
4。Infinity-( - Infinity)結果は無限です
5.オペランドがオブジェクトである場合、オブジェクト値のメソッドが呼び出されます。結果がNANの場合、結果はNANです。 value ofメソッドがない場合は、toString()メソッドを呼び出し、結果の文字列を数値に変換します。
リレーショナル演算子
リレーショナル演算子は均一にtrueまたはfalseを返します
console.dir(16> "5"); // True Console.Dir( "16"> "5"); // false Console.dir(5 <"a"); // false Console.dir(5> = nan); // false Console.dir(5 <nan); // false Console.dir(nan> = nan); console.dir(5> = undefined); // false console.dir(5> = 5); // true console.dir(5> = true); // true console.dir(5> = undefined); // false console.dir(5> = 5); // true console.dir(5> = true); console.dir(5> = ""); // true console.dir( "brick"> "alphabet"); // false bの文字列エンコード値は66、aの文字列エンコードは97です。
リレーショナル演算子の暗黙の変換の原則について話しましょう。
それはまだ上記と同じです、私は同じことを言いません。
比較された2つの数値が文字列である場合、文字列に対応する文字列エンコード値が比較されます。
追加操作
添加操作の暗黙的な変換は、添加操作の暗黙的な変換が以前のものとは異なるため、最終的に私がついに言った理由です。以前のすべての演算子記号は、1つが数字である限り、もう1つは番号()を使用してデフォルトで番号を変換します。追加操作は異なります。追加操作の1つが文字列である限り、もう1つは文字列に変換され、文字列スプライシングが実行されます!
console.dir(16+ "5"); // 156 Console.Dir(5+ "A"); // 5a Console.dir(5+nan); // nan Console.dir(5+null); // 5 Console.dir( '5'+null); // 5Null Console.dir(5+未定義); console.dir(5+5); // 10 console.dir( "2つの数値の合計は"+5+5); // 2つの数字の合計は55 Console.dir( "2つの数字の合計は"+(5+5)); // 2つの数字の合計は10です
追加演算子の暗黙の変換の原則について話しましょう。
1. 1つは文字列であり、もう1つはスプライシングのために文字列に変換されます。 1つが文字列であり、もう1つがnullまたは未定義の場合、nullまたは未定義を追加すると、文字列()メソッドを呼び出して文字列「null」または「undefined」を取得してからスプライスします。
2。数字がnullまたは未定義で追加された場合、nullまたは未定義はnumber()に変換され、追加されます。
3.残りの原則は他の原則に似ているので、あまり言いません。
バイアー暗黙の変換
次のコードを一度実行してください、そして私はあなたがそれを自然に理解するだろうと信じています〜
var a; console.dir(0 == false); // trueconsole.dir(1 == true); // trueconsole.dir(2 == {valueof:function()function(){return 2}}); // trueconsole.dir(a == nan);未定); // falseconsole.dir(1 == undefined); // falseconsole.dir(2 == {toString:function(){return 2}}); // undefined == null); // trueconsole.dir(null == 1); }、valueof:function(){return []}} == 1); // trueconsole.dir(1 == "1"); // trueconsole.dir(1 === "1"); // false