ホームページ > 記事 > ウェブフロントエンド > JS 関数の一般的な問題の説明
勉強中にJavaScript関数の問題に遭遇することがよくありますが、この記事ではそれについて説明します。
関数宣言と関数式の違いは何ですか
関数式と関数宣言ステートメントには同じ関数名が含まれており、両方とも新しい関数オブジェクトを作成するのが主な違いです
関数宣言 関数。 name は変数であり、その変数は関数オブジェクトを指します。変数プロモーションは、変数と関数の関数本体です。
関数式は var を介して割り当てられ、関数全体が新しい変数に割り当てられ、変数は新しい変数名にプロモートされ、関数の初期化コードは元の位置に残ります。
変数の事前宣言とは何ですか?関数の事前宣言とは何ですか? 変数の事前宣言は、デフォルトでは次のコードになります:
var a; );
a = 1 ;関数宣言が先頭に追加されました
console.log(a);var a = 1; 结果为underfined
a()function a(){console.log ("hello") }関数のオーバーロードの実装方法JSには関数のオーバーロードという概念がありません。パラメータが異なっていても、後続の新しい関数は同じ名前で前の関数を上書きします。
function a(){ //将函数声明提升console.log ("hello") }a() arguments 是什么
即時実行関数式とは何ですか?関数とは
関数式の即時実行とは、関数宣言全体を()で囲んで関数式にし、引数に続いて関数を即時実行することです。
function ( ){ } 関数宣言は ( function (){ }) ( ) に変換されます関数:
変数プロモーションの干渉を受けることなく、独自のスコープと独立したローカル変数を生成し、内部変数と外部変数間の競合を軽減します おそらく、一度実行すると変数が破棄されます。
関数のスコープチェーンとは
JSではグローバル変数とローカル変数に分かれており、グローバル変数は関数内でアクセスできますが、関数内のローカル変数は関数外ではアクセスできません。が関数内にある場合、まず変数がこのスコープ内で定義されているかどうかを確認し、定義されていない場合は、必要な変数が見つかるまで次のレベルを検索します。グローバル変数に見つからない場合は、エラーが報告されます。外部変数との干渉を避けるために、ローカル変数を使用するようにしてください。
1. コードの出力
function say(name,sex,age){ console.log(arguments); }console.log('name:jiuyi',"sex:男",'age:54') 结果为:"name:jiuyi""sex:男""age:54"
2. パラメーターの二乗の合計を返す関数を作成します
function p(a,b,c) { console.log(a+b+c); } function p(a,b) { console.log(a+b); } console.log(p('hello','jiuyi','yes')); console.log(p('hello')) 结果为: "hellojiuyi" "helloundefined"
3. 次のコードの出力は何ですか?理由
console.log(a); //JS はグローバル変数をプロモートするため、a は宣言されるだけで割り当てられないため、出力が制限されます。 var a = 1; //エラーが報告されます。 b は宣言または割り当てられていません。
4. 次のコードの出力は何ですか?なぜfunction getInfo(name, age, sex){ console.log('name:',name); console.log('age:', age); console.log('sex:', sex); console.log(arguments); //代表实际参数,所以输出实际参数内容 arguments[0] = 'valley';//name赋值为valley console.log('name', name);//所以这里参数输出为valley } getInfo('hunger', 28, '男'); getInfo('hunger', 28); getInfo('男'); 结果为: name: hunger age: 28 sex: 男 ["hunger", 28, "男"] name valley name: hunger age: 28sex: undefined ["hunger", 28] name valley name: 男 age: undefined sex: undefined["男"] name valley結果は次のようになります:
hello world //関数宣言プレフィックス関数sayName(name)が最上位に昇格するため、sayNameには宣言とコンテンツがあります。エラー報告 //varsayAgeが先頭に変数宣言があり、sayAge関数が宣言されていないため、エラーが報告されます。
5. 次のコードの出力は何でしょうか?なぜ
function sumOfSquares(){ var x = 0; for(var i = 0;i<arguments.length;i++){ x = x + arguments[i]*arguments[i] } console.log(x) } sumOfSquares(2,3,4); sumOfSquares(1,3); 结果为:2910
6. 次のコードの出力なのでしょうか?なぜ
sayName('world'); sayAge(10); function sayName(name){ console.log('hello ', name); } var sayAge = function(age){ console.log(age); };
function fn(){} var fn = 3; console.log(fn); 相当于: var fn; function fn(){} ; fn = 3; console.log(fn); //所以输出为3
8.次のコードの出力なのでしょうか?なぜ
function fn(fn2){ console.log(fn2); //输出 function fn2(){ console.log('fnnn2');} var fn2 = 3; console.log(fn2); //输出3 console.log(fn); //输出 function fn(fn2){ console.log(fn2); var fn2 = 3; console.log(fn2); console.log(fn); function fn2(){ console.log('fnnn2'); } } fn(10); function fn2(){ console.log('fnnn2'); //不输出,函数未调用 } } fn(10); 相当于:var fn2; //声明前置function fn(fn2){ function fn2(){ //函数声明前置 console.log('fnnn2'); //此函数不输出,未调用 } console.log(fn2); // 调用的其实是函数fn2 fn2 = 3; console.log(fn2); // 此时fn2已被赋值为3 console.log(fn); //调用的其实是fn整个函数} fn(10);
9. 次のコードの出力なのでしょうか?なぜ
var fn = 1; function fn(fn){ console.log(fn); } console.log(fn(fn)); //结果报错,变量提升,fn为1,直接调用1出错结果相当于: var fn; function fn(fn){ console.log(fn); } fn = 1; console.log(fn(fn));
10. 次のコードの出力なのでしょうか?
console.log(j); //变量提升输出undefined console.log(i); //变量提升输出undefinedfor(var i=0; i<10; i++){ //i循环后结果为10var j = 100; } console.log(i); //输出10 console.log(j); //输出100
のコードは次のコードと同等であるのはなぜですか: varsay;
fn(); var i = 10; var fn = 20; console.log(i); function fn(){ console.log(i); var i = 99; fn2(); console.log(i); function fn2(){ i = 100; } } 代码相当于:var i; var fn;function fn(){ var i ; function fn2(){ i = 100; } console.log(i); //只有声明未赋值输出underfined i = 99; fn2(); //经过运行I=100 console.log(i); //输出100} fn(); i = 10; fn = 20;console.log(i); //输出10関数sayは即時実行関数であり、実行結果は10、9、8、7、6、5、4、3、2です。最終的なsay値は0なので、出力は0ですこの記事では、js関数の一般的な問題について説明します。関連コンテンツの詳細については、PHP中国語Webサイトを参照してください。
JavaScript関連関数の説明
以上がJS 関数の一般的な問題の説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。