[英]What does (function (x,y){…})(a,b); mean in JavaScript?
我看到了這個功能:
(function (x, y, data, lbl, dot) {
// Function body...
})(x, y, data[i], labels[i], dot);
這是什么? 一個函數? 為什么要在()
放置函數定義?
在 javascript 中,您可以擁有anonymous
和self invoking
函數。
function add(a, b)
{
return a + b;
}
與
var add = function (a, b) {
return a + b;
}
你把這些稱為
add(10, 20)
您可以定義該函數並立即調用它
(
function(a, b)
{
return a + b;
}
)(10, 20);
該
(
function(a, b)
{
return a + b;
}
)
part 定義了一個函數,緊接在它調用剛剛定義的函數之后的(10, 20)
以 10 和 20 作為它的參數。
由於該函數沒有名稱,所以后面的代碼中不能使用它。
您問題中的代碼可能是minified ,並以類似的方式創建一個函數並立即調用它。
自執行匿名函數將是一個非常准確的描述。
它是一個自調用函數,它會立即執行。 自調用函數對於避免創建全局變量是有效的,jQuery 非常有效地使用了這一點。
括號內的函數是匿名函數。 我不能說為什么這樣做是這樣做的,但程序員定義了匿名函數,並立即調用它。 您可以通過簡單地用傳入的值替換其參數並刪除函數定義來做同樣的事情。
var funct = function(x,y) { }
funct(1,2)
是一樣的
(function(x,y){ })(1,2);
它定義了一個自調用匿名函數。 它被執行然后扔掉。 這是一種整理代碼(盡管這是一個不好的例子)並僅在該范圍內擁有私有變量的方法。 它也不會存儲在閉包中。
我想通了
!(function (a, b) {
在 poly up 數學網站上,它不時地停止點擊工作
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.