ECMAscriptよりもJavascriptを愛する人のためのクイズ

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 /






All Articles