3つの単純だがトリッキーなJavaScriptのインタビューの質問
JavaScriptの配列のlengthプロパティ
質問
の服[0]の値が何であるの?
const clothes = ['jacket', 't-shirt'];
clothes.length = 0;
clothes[0]; // => ???
回答
特定の挙動を有する長プロパティ配列オブジェクト:プロパティ値の副作用の長さを減少させる独自の配列要素を削除することです。だから、JavaScriptの実行clothes.length = 0は、すべての要素を削除する時期。
アレイは、服を空にされているため、衣類[0]は未定義に等しいです。
自動セミコロン挿入
質問2
arrayFromValue()は何の値を返しますか?
function arrayFromValue(item) {
return
[item];
}
arrayFromValue(10); // => ???
答えは、
[アイテム]キーワードおよび式の間にリターン改行を欠場するのは簡単です。このブレークは、自動的にはJavaScript、リターンと式の間にセミコロン[項目]挿入されています
function arrayFromValue(item) {
return;
[item];
}
arrayFromValue(10); // => undefined
リターン;それはundefinedを返しますので、内部関数。したがってarrayFromValue(10)が未定義です。
浮動小数点計算
質問3
式の結果は何ですか?
0.1 + 0.2 === 0.3 // => ???
回答
まず、我々は最初の0.1 + 0.2の値を知っている必要があります。
0.1 + 0.2; // => 0.30000000000000004
ない完全に0.1および0.2〜0.3の和が、0.3よりもわずかに高いです。
バイナリのでクラス丸め誤差を生成するように小数点数、浮動小数点加算演算を浮動符号化されました。
要するに、直接比較は、正確な浮動小数点数ではありません。
したがって=== 0.3 0.1 + 0.2の結果が偽です。