"(function(){})()"的分步解析
一、"(function(){})()"的功能
功能描述:定義一個函數對象並執行。
返回值:該代碼段返回定義的函數對象的執行結果。
這個寫法到底是什麼意思呢?
首先我們把代碼分爲2個部分:"(function(){})" 和 "()"
"(function(){})"的功能:定義一個函數對象。
"()":執行函數並返回結果。
下面我們來逐步分析這種寫法。
二、"(function(){})()"的分步解析
首先嚐試理解以下2種描述:
1、定義一個函數a,返回固定值1;
對應的javascript代碼片段:
function a()
{
return 1;
}
2、定義一個對象a,該對象爲函數對象,函數功能返回固定值1;
對應的javascript代碼片段:
var a = new Object();
a = function()
{
return 1;
}
簡化寫法:
var a = function()
{
return 1;
}
進一步簡化
var a = function(){return 1}
3、有上可以瞭解到
javascript代碼片段
var a = function(){return 1}
實現的是定義一個變量a,a爲一個對象,確切說是一個函數對象,返回固定值1;
一個簡單的問題如何調用a?
當然是:a()
那如果"a = function(){return 1}",a的調用又怎麼寫?
"function(){return 1}" + "()"
即:
(function(){return 1})()
備註:
什麼函數定義部分加個"()"?
其實這個"()"沒有特殊含義,只是把函數對象作爲一個整體。
如果不加"()"那麼 就是"function(){return 1}()"這明顯是一個語法錯誤。
功能描述:定義一個函數對象並執行。
返回值:該代碼段返回定義的函數對象的執行結果。
這個寫法到底是什麼意思呢?
首先我們把代碼分爲2個部分:"(function(){})" 和 "()"
"(function(){})"的功能:定義一個函數對象。
"()":執行函數並返回結果。
下面我們來逐步分析這種寫法。
二、"(function(){})()"的分步解析
首先嚐試理解以下2種描述:
1、定義一個函數a,返回固定值1;
對應的javascript代碼片段:
function a()
{
return 1;
}
2、定義一個對象a,該對象爲函數對象,函數功能返回固定值1;
對應的javascript代碼片段:
var a = new Object();
a = function()
{
return 1;
}
簡化寫法:
var a = function()
{
return 1;
}
進一步簡化
var a = function(){return 1}
3、有上可以瞭解到
javascript代碼片段
var a = function(){return 1}
實現的是定義一個變量a,a爲一個對象,確切說是一個函數對象,返回固定值1;
一個簡單的問題如何調用a?
當然是:a()
那如果"a = function(){return 1}",a的調用又怎麼寫?
"function(){return 1}" + "()"
即:
(function(){return 1})()
備註:
什麼函數定義部分加個"()"?
其實這個"()"沒有特殊含義,只是把函數對象作爲一個整體。
如果不加"()"那麼 就是"function(){return 1}()"這明顯是一個語法錯誤。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.