ECMAScriptよりもJavaScriptを愛する人のためのクイズ。 主な賞品:棚の上のパイ。
更新:説明。 完全にトピックから外れている人のために。 ECMAScriptは、最新のブラウザーでのJavaScript実装のベースとなる言語標準です。 この記事のプログラムの動作を定義するのは、この標準です。 JavaScriptはECMAScriptに対する「アドオン」です。
説明番号2。IEグリッチはクイズに直接関連していません。これらは標準実装のエラー(または「機能」)であるためです。
*質問:質問1.次のプログラムは何を出力しますか?
var a = 123;
function foo() {
alert(typeof a);
var a = '123';
}
foo();
質問2.次のプログラムは何を出力しますか?
alert(sum1(3, 4));
alert(sum2(3, 4));
function sum1(a, b) { return a + b; }
var sum2 = function(a, b) { return a + b; }
質問3.次のプログラムは何を出力しますか?
function foo(){
return
{
code: 1
};
}
alert(foo());
質問4.次のプログラムは何を出力しますか?
alert([1,2,].length + [,1,2].length);
最後の質問。 別のエリアから少し。
質問5.計算機能を高速化する方法は?
var Multiplier = 123; // Global
function calc() { var s = 0; for (var i = 0; i < arguments.length; i++) s += Multiplier * arguments[i]; return s; }
*正解:回答1.「未定義」
回答2.最初に「7」、次にエラー。
回答3.「未定義」
回答4.「5」
回答5.
function calc() { var s = 0, m = Multiplier; for (var i = arguments.length; i--; ) s += m * arguments[i]; return s; }
function calc() { var s = 0, m = Multiplier; for (var i = arguments.length; i--; ) s += m * arguments[i]; return s; }
*説明付きの正解:回答1.「未定義」
変数を宣言すると、変数は宣言されている関数に対応するスコープに配置されます。 関数の外部で変数が宣言されている場合、その変数はグローバルスコープに配置されます。 変数の作成は、その宣言を使用して関数の制御を受け取ると発生します。 または、変数がグローバルの場合はプログラム。 ECMAScriptで変数を作成すると、未定義になります。 変数が初期化で宣言されている場合、変数が作成されたときではなく、var命令を含む行が実行されたときに初期化が行われます。
回答2.最初に「7」、次にエラー。
宣言(sum1)を使用して関数を定義することと式(sum2)を使用して関数を定義することの最も重要な違いは、コードが実行される前に宣言が実行され、式が実行されるときです。
回答3.「未定義」
仕様では、セミコロンで行をオートコンプリートするためのメカニズムが宣言されています。これにより、改行がある場合、改行前にこの記号を使用して命令を提供できます。 ここでは、文字列c“ return”には有効な言語命令が含まれており、次の改行が続くため、セミコロンで文字列を補完するメカニズムがトリガーされます。
回答4.「5」
配列が指定されると、空の要素を配列に追加することなく、末尾のコンマが破棄されます。
IEが好きな人向けの
アップデート 。 IEは、このような配列の最後に空の要素を誤って挿入します。
回答5。
function calc() { var s = 0, m = Multiplier; for (var i = arguments.length; i--; ) s += m * arguments[i]; return s; }
ほとんどのJavaScript実装では、2つの考慮事項が当てはまります。ローカル変数へのアクセスが高速になり、「for(var i = arguments.length; i--;)」ループに含まれる命令が通常より少なくなります。
*リンク:
en.wikipedia.org/wiki/ECMAScriptご清聴ありがとうございました。
PSテキストの白い色を削除しました。 このブログを読む人は必要ありません。
記事をありがとう。 / terloger /