/ / JavaScriptの無名関数とインライン関数の違いは何ですか? [非公開] - JavaScript、関数、インライン、匿名

JavaScriptの匿名関数とインライン関数の違いは何ですか? [閉じる] - javascript、function、inline、anonymous

タイトルは私の質問をまとめたものです。その点を示す例があればいいでしょう。

回答:

回答№1の22

第一に、JavaScriptのインライン関数のコンセンサス定義はないようです。 列をなして JavaScript関数の特殊なケースとなる関数。あ 列をなして functionは、解析時ではなく実行時に作成される変数に割り当てられる関数です。

無名関数とインライン関数は実行時に作成されるという点で、実質的に同じです。違いは、インライン関数は変数に割り当てられているため、再利用できることです。このように、インライン関数は通常の関数と同じように機能します。

関数

function func() {
alert ("function");
}

$("a").click(func);

インライン関数

var func = function() {
alert ("inline")
};

$("a").click(func);

無名関数

$("a").click(function() {
alert("anonymous");
});

無名関数とインライン関数は、通常の関数よりもパフォーマンスが低下する可能性があります。見る var functionName = function(){} vs function functionName(){}.


回答№2については2

インライン関数は多少異なり、ウィキペディアから引用しています:

インライン関数とは、インライン関数です。コンパイラはインライン展開を実行するよう要求されました。言い換えれば、プログラマーは、定義された1つの場所で関数を呼び出すコードを生成するのではなく、関数が呼び出されるすべての場所に関数の完全な本体を挿入するようにコンパイラーに要求しました。コンパイラはこの要求を尊重する義務はありません。

Javascriptはインライン関数の概念をサポートしません。しかし、私はコールバックが好きであるウェブでいくつかの参照を見つけました:

(function(){
setTimeout(/*inline function*/function(){ /*some code here*/ }, 5);})
();

インライン関数と呼ばれます。 ご覧のとおり、これらの関数には名前がありません。したがって、これらは基本的に無名関数と同じです。私は、あなたがそれを使用しているところで関数を定義しているので、それは「インライン関数」によって参照されていますが、「匿名関数」という名前は概念を最もよく説明します。


回答№3の場合は1

無名関数はこのように定義されています

var x = 1;
(function(x){
// Do something
console.log(x); // 1
})(x);

しかし、インライン関数の定義は私にとって少し不明瞭です。


回答№4の場合は1

インライン関数

var foo = function (){
alert("Hello")
}
setTimeout(foo, 100);

無名関数

setTimeout(function(){
alert("Hello")
}, 100);

彼らは同じことをしているがインラインあなたがそれを再利用したいときに機能が優れています。匿名は、その名前が他の変数と競合するかどうかを心配する必要がなく、より短いので、1回限りの使用に適しています。

だからあなたの状況によります。