Javascript 関数では関数名を記述する必要はありません。名前のない関数は「匿名関数」と呼ばれます。この関数には関数キーワード、パラメーター、関数本体のみが含まれており、構文は「function ( [引数]){ステートメント}" 。匿名関数の機能: 1. 無名関数を通じてクロージャを実現できます; 2. ブロックレベルのスコープをシミュレートし、グローバル変数を削減します。
このチュートリアルの動作環境: Windows7 システム、JavaScript バージョン 1.8.5、Dell G3 コンピューター。
Javascript 関数は関数名を記述する必要がなく、名前のない関数を「無名関数」と呼びます。
#匿名関数: 実際の名前のない関数。
匿名関数には、関数キーワード、パラメーター、関数本体のみが含まれます。具体的な使用法は次のとおりです。
1 2 3 | function ([args]) {
statements
}
|
ログイン後にコピー
最初に通常の関数を宣言します:
1 2 3 4 | function fn(){
console.log( "web-chubby" );
}
|
ログイン後にコピー
次に、関数の名前を削除して匿名関数にします:
1 2 3 4 | function (){
console.log( "web-chubby" );
}
|
ログイン後にコピー
At thisポイント、これだけでもわかります。匿名関数を実行すると、構文要件を満たしていないため、エラーが報告されます。
解決策: 匿名関数を括弧で囲んで式にします:
1 2 3 4 5 | ( function (){
console.log( "web-chubby" );
})
|
ログイン後にコピー
匿名関数の実行方法と使用方法機能?
1. 匿名関数の実行
匿名関数を実行する必要がある場合は、匿名関数の後に括弧を追加するだけです。つまり、関数をすぐに実行します
- 括弧は匿名関数のみをラップし、その後に実行括弧が続きます (一般的に使用されます)
1 2 3 | ( function () {
alert(& #39;匿名函数执行方式一')
})();
|
ログイン後にコピー
- 括弧匿名になります 匿名関数を実行する関数と括弧は一緒にラップされて式を形成します
2. 匿名関数パラメータの受け渡し
は他の通常のパラメータと同じですパラメータを括弧内に直接記述するだけです:
1 2 3 | ( function (m) {
alert(m)
}(& #39;这是匿名函数传进来的参数'));
|
ログイン後にコピー
匿名関数の適用
- イベントをバインドするときメソッド
1 2 3 4 5 6 7 8 9 | <input type= "button" value= "点我啊!" id= "sub" >
<script>
var sub=document.querySelector( "#sub" );
sub.onclick= function (){
alert( "当点击按钮时会执行到我哦!" );
}
</script>
|
ログイン後にコピー
#関数式は、匿名関数を変数に代入します##
1 2 3 4 5 6 | var fn= function (){
return "我是一只小小小小留下,怎么飞也飞不高!"
}
console.log(fn());
|
ログイン後にコピー
#オブジェクト 関数の属性inside
1 2 3 4 5 6 7 8 | var obj={
name: "web-chubby" ,
age:18,
fn: function (){
return "我叫" + this .name+ "今年" + this .age+ "岁了!" ;
}
};
console.log(obj.fn());
|
ログイン後にコピー
はコールバック関数であり、匿名関数をパラメータの 1 つとして受け取ります
1 2 3 4 5 6 7 | let numArr = [1, 5, 9, 10]
let newArr = numArr.filter( function (item) {
if (item !== 9) {
return item
}
});
|
ログイン後にコピー
関数の戻り値、つまり関数が戻り値として使用されます
1 2 3 4 5 6 7 8 9 10 11 12 | function fn(){
return function (){
return "web-chubby" ;
}
}
console.log(fn()());
var box=fn();
console.log(box());
|
ログイン後にコピー
ブロックレベルのスコープを模倣します
ブロック レベル スコープ。プライベート スコープとも呼ばれます。 JavaScript にはブロックレベルのスコープがありません。たとえば、
1 2 3 4 5 6 7 8 | <strong> if (1==1){
var a=12;
}
console.log(a);
for ( var i=0;i<3;i++){
console.log(i);
}
console.log(i);
|
ログイン後にコピー
if(){}for(){} などには独自のスコープがありません。独自のスコープ外に出ると、宣言された変数は直ちに破棄されます。ただし、匿名関数を使用してブロック レベルのスコープをシミュレートできます:
ブロック レベルのスコープを試してください:
1 2 3 4 5 6 7 | function fn(){
( function (){
var la= "啦啦啦!" ;
})();
console.log(la);
}
fn();
|
ログイン後にコピー
匿名関数の役割:
1. クロージャは匿名関数を通じて実装できます。ここで簡単に説明します。クロージャは、関数スコープ内で定義された変数にアクセスできる関数です。クロージャを作成するには、多くの場合、匿名関数を使用する必要があります。 2. ブロックレベルのスコープをシミュレートし、グローバル変数を削減します。無名関数の実行後、メモリに保存されている対応する変数が破棄されるため、メモリが節約されます。さらに、大規模な複数人による開発プロジェクトでは、ブロックレベルのスコープを使用すると、名前の競合の問題が大幅に軽減され、致命的な結果が回避されます。開発者は、グローバル スコープが台無しになることを心配する必要がなくなりました。
[関連する推奨事項:
JavaScript 学習チュートリアル
]
以上がJavaScriptでは関数名を書けないのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。