一つの文章はJavaScriptタイプの転換を解決します。(面接でよく見られます。)
なぜこれを言いますか?面接問題というのは動機を話してください。
問題は以下の通りです
どのタイプの転換ですか?操作者優先度とか、これらは一番基本的です。サイの本に詳しい紹介があります。しかし、サイの本を読む前5章はめったにないです。
例えば優先順位の塊は、多くの本に教えられています。「優先順位を暗記しなくてもいいです。不確かなら、括弧を入れてもいいです。」普通コードを書く時もそうします。
でも現実はなんですか?面接の時、このような問題を出して、あなたにさせます。この問題の意味が分かりません。
ここまで文句を言って、本論文では類型転換問題を解決して、「JS権威ガイド」49ページの表を暗記するように努力します。
どれらのものが偽物ですか?
合計6つ:
これ以外のものは全部ではない!たとえ次のような形であっても、
&&&は短絡文法で、値を求めた後に必ずBooleanタイプではなくて、更に両側がブール値を転化して再び計算するのではありません。
例えば2&&3の結果は3で、trueではありません。
だからif(a&&b)は、私たちが普段理解しているような、「aとbが同時に本当であれば」という誤った表現です。
その他の基本的なタイプは文字列に変換されます。基本的には予想通りです。
以上、基本タイプの転換は全部分かりました。
参照の種類を基本タイプに変換します。
引用の種類はブールに変換されます。常にtrueです。
参照の種類を文字列に変換
1.ToSteringメソッドを優先的に呼び出し(ある場合)、その戻り結果が元のタイプかどうかを確認し、もしそうであれば、文字列に変換して返します。
2.さもなければ、valueOfメソッドを呼び出し(ある場合)、その結果が元のタイプかどうかを確認し、もしそうであれば、文字列に変換して返します。
3.他のエラー。
参照の種類を数値に変換
1.valueOfメソッドを優先的に呼び出し(ある場合)、その結果が基本タイプかどうかを確認し、もしそうであれば、数字に変換して返します。
2.もしそうでなければ、ToSteringメソッドを呼び出し(ある場合)、その戻り結果が基本タイプかどうかを確認し、もしそうであれば、数字に変換して返します。
3.他のエラー。
まず、よくある引用タイプtoStringとvalueOfは何を返しますか?
最後に悪の「=」を言います。
面接の問題は次の通りです
ははは。
二等号は、両側のタイプが違ったら、暗黙的な変換が発生します。サイの本の75ページのまとめは以下の通りである。
1,nullとundefinedは、同じです。
2,数字と文字列は、数字に変換して比較します。
3,trueまたはfalseがあれば、1または0に変換して比較します。
4,引用の種類があれば、valueOfを優先的に呼び出します。
5,その他はすべて等しくありません。
したがって、
"==falseがtrueである理由は第3条により、"==0になり、第2条による。
第4条もう一つの例:
[2]のvalueOfは対象自体であり、基本タイプではない。
toStringを呼び出してみたところ、'2'となりました。
だから'2'と数字2の比較になりました。第2条により、等しい。WTRF
最後に、「===」を使っても大丈夫です。
以上は小编が皆さんに绍介した文章で、JavaScriptタイプの転换(面接でよく见られます)ができました。皆さんに助けてほしいです。ここでも私たちのサイトを応援してくれてありがとうございます。
問題は以下の通りです
var bool = new Boolean(false);
if (bool) {
alert('true');
} else {
alert('false');
}
運行結果はtrueです!どのタイプの転換ですか?操作者優先度とか、これらは一番基本的です。サイの本に詳しい紹介があります。しかし、サイの本を読む前5章はめったにないです。
例えば優先順位の塊は、多くの本に教えられています。「優先順位を暗記しなくてもいいです。不確かなら、括弧を入れてもいいです。」普通コードを書く時もそうします。
でも現実はなんですか?面接の時、このような問題を出して、あなたにさせます。この問題の意味が分かりません。
ここまで文句を言って、本論文では類型転換問題を解決して、「JS権威ガイド」49ページの表を暗記するように努力します。
どれらのものが偽物ですか?
合計6つ:
0 +0、-0,NaN
""
false
undefined
null
上の順番は基本タイプで並べられています。これ以外のものは全部ではない!たとえ次のような形であっても、
Infinity
'0'、'false'、" "( )
:[],{},function(){}
if(a&&b)の正しい理解方法は、a&bが式を行って値を求めた後、Booleanタイプに変換します。&&&は短絡文法で、値を求めた後に必ずBooleanタイプではなくて、更に両側がブール値を転化して再び計算するのではありません。
例えば2&&3の結果は3で、trueではありません。
だからif(a&&b)は、私たちが普段理解しているような、「aとbが同時に本当であれば」という誤った表現です。
その他の基本的なタイプは文字列に変換されます。基本的には予想通りです。
console.log("" + null); // "null"
console.log("" + undefined); // "undefined"
console.log("" + false); // "false"
console.log("" + true); // "true"
console.log("" + 0); // "0"
console.log("" + NaN); // "NaN"
console.log("" + Infinity); // "Infinity"
その他の基本的なタイプは数字に転化します。特別な記憶が必要です。
console.log(+null); // 0
console.log(+undefined); // NaN
console.log(+false); // 0
console.log(+true); // 1
console.log(+""); // 0
console.log(+'1'); // 1
console.log(+'1x'); // NaN
ここでnull、空の文字は0、undefinedはNaNです。以上、基本タイプの転換は全部分かりました。
参照の種類を基本タイプに変換します。
引用の種類はブールに変換されます。常にtrueです。
参照の種類を文字列に変換
1.ToSteringメソッドを優先的に呼び出し(ある場合)、その戻り結果が元のタイプかどうかを確認し、もしそうであれば、文字列に変換して返します。
2.さもなければ、valueOfメソッドを呼び出し(ある場合)、その結果が元のタイプかどうかを確認し、もしそうであれば、文字列に変換して返します。
3.他のエラー。
参照の種類を数値に変換
1.valueOfメソッドを優先的に呼び出し(ある場合)、その結果が基本タイプかどうかを確認し、もしそうであれば、数字に変換して返します。
2.もしそうでなければ、ToSteringメソッドを呼び出し(ある場合)、その戻り結果が基本タイプかどうかを確認し、もしそうであれば、数字に変換して返します。
3.他のエラー。
まず、よくある引用タイプtoStringとvalueOfは何を返しますか?
var a = {};
console.dir(a.toString()); // "[object Object]"
console.dir(a.valueOf()); //
var b = [1, 2, 3];
console.dir(b.toString()); // "1,2,3"
console.dir(b.valueOf()); //
var c = [[1],[2]];
console.dir(c.toString()); // "1,2"
console.dir(c.valueOf()); //
var d = function() {return 2};
console.dir(d.toString()); // "function() {return 2}"
console.dir(d.valueOf()); //
したがって、対応する変換が文字列と数字の場合は、
var a = {};
console.dir(a + ""); // "[object Object]"
console.dir(+a); // NaN
var b = [1, 2, 3];
console.dir(b + ""); // "1,2,3"
console.dir(+b); // NaN
var c = [[1],[2]];
console.dir(c + ""); // "1,2"
console.dir(+c); // NaN
var d = function() {return 2};
console.dir(d + ""); // "function () {return 2}"
console.dir(+d); // NaN
もう一つ間違えた状況を報告します。
var a = {};
a.toString = function() {return {};}
console.log("" + a); //
console.log(+a) //
以上のタイプは法則を変えて基本的に言います。最後に悪の「=」を言います。
面接の問題は次の通りです
var a = false;
var b = undefined;
if (a == b) {
alert('true');
} else {
alert('false');
}
trueが弾けると思いました。あらなぜfalseですかははは。
二等号は、両側のタイプが違ったら、暗黙的な変換が発生します。サイの本の75ページのまとめは以下の通りである。
1,nullとundefinedは、同じです。
2,数字と文字列は、数字に変換して比較します。
3,trueまたはfalseがあれば、1または0に変換して比較します。
4,引用の種類があれば、valueOfを優先的に呼び出します。
5,その他はすべて等しくありません。
したがって、
console.log(undefined == false); // false
console.log(null == false); // false
console.log(0 == false); // true
console.log(NaN == false); // false
console.log("" == false); // true
0==falseがtrueである理由は第3条による。"==falseがtrueである理由は第3条により、"==0になり、第2条による。
第4条もう一つの例:
console.log([[2]] == '2')
その上の結果はtrueです。理由は以下の通りです。[2]のvalueOfは対象自体であり、基本タイプではない。
toStringを呼び出してみたところ、'2'となりました。
だから'2'と数字2の比較になりました。第2条により、等しい。WTRF
最後に、「===」を使っても大丈夫です。
以上は小编が皆さんに绍介した文章で、JavaScriptタイプの転换(面接でよく见られます)ができました。皆さんに助けてほしいです。ここでも私たちのサイトを応援してくれてありがとうございます。