JS匿名函式理解

2022-09-13 10:00:14 字數 1919 閱讀 9438

匿名函式的基本形式為(function())();

前面的括號包含函式體,後面的括號就是給匿名函式傳遞引數並立即執行之

匿名函式的作用是避免全域性變數的汙染以及函式名的衝突

1.小括號的作用

小括號能把我們的表示式組合分塊,並且每一塊,也就是每一對小括號,都有乙個返回值。這個返回值實際上也就是小括號中表示式的返回值。所以,當我們用一對小括號把匿名函式括起來的時候,實際上小括號對返回的,就是乙個匿名函式的function 物件。因此,小括號對加上匿名函式就如同有名字的函式般被我們取得它的引用位置了。所以如果在這個引用變數後面再加上引數列表,就會實現普通函式的呼叫形式。

簡單來說就是小括號有返回值,也就是小括號內的函式或者表示式的返回值,所以說小括號內的function返回值等於小括號的返回值

2.匿名函式的寫法

方式1,呼叫函式,得到返回值。強制運算子使函式呼叫執行

(function(x,y)(3,4)); 

方式2,呼叫函式,得到返回值。強制函式直接量執行再返回乙個引用,引用再去呼叫執行

(function(x,y))(3,4); 

這種方式也是很多庫愛用的呼叫方式,如jquery,mootools。

方式3,使用void

void function(x) (9);

方式4,使用-/+運算子

-function(x,y)(3,4);

+function(x,y)(3,4);

--function(x,y)(3,4);

++function(x,y)(3,4); 

方式5,使用波浪符(~)

~function(x, y) (3, 4); 

方式6,匿名函式執行放在中括號內

[function()(this)] 

方式7,匿名函式前加typeof

typeoffunction()(this) 

方式8,匿名函式前加delete

deletefunction()(this) 

方式9,匿名函式前加void

void function()(this) 

方式10,使用new方式,傳參

newfunction(win)(this) 

方式11,使用new,不傳參

newfunction() 

方式12,逗號運算子

function()(); 

方式13,按位異或運算子

^function()(); 

方式14,比較運算子

function()(); 

最後看看錯誤的呼叫方式

function(x,y)(3,4); 

匿名函式的n種寫法如下所示

匿名函式沒有實際名字,也沒有指標,怎麼執行?

關於匿名函式寫法,很發散~ 

+號是讓函式宣告轉換為函式表示式。彙總一下

最常見的用法: 

**如下:

(function() )(); 

當然也可以帶引數: 

**如下:

(function(o) )('water'); 

想用匿名函式的鏈式呼叫?很簡單: 

**如下:

(function(o) )('water')('down'); 

常見的匿名函式都知道了,看看不常見的: 

**如下:

~(function())();//寫法有點酷~ 

**如下:

void function()();//據說效率最高~ 

**如下:

+function()(); 

**如下:

-function()();

**如下:

~function()();

**如下:

!function()(); 

**如下:

(function()());//有點強制執行的味道~

JS匿名函式理解

匿名函式的基本形式為 function 前面的括號包含函式體,後面的括號 就是給匿名函式傳遞引數並立即執行之 匿名函式的作用是 避免全域性變數的汙染以及函式名的衝突 1.小括號的作用 小括號能把我們的表示式組合分塊,並且每一塊,也就是每一對小括號,都有乙個返回值。這個返回值實際上也就是小括號中表示式...

js函式引數理解

eg function setname obj var person new object setname person alert person.name nicholas 例子的結果顯示的值仍然是 nicholas 即使在函式內部修改了引數的值,但原始的引用仍然保持未變。實際上,當在函式內部重寫...

SetBkMode函式理解

輸出的字串時,發現存在背景色,這樣的輸出是破壞背景的。那需要使用什麼方法來保持背景不變,而又能輸出紅色的字串呢?比如按鈕的文字顏色是黑色的,而背景是灰色的。這就需要使用setbkmode函式來設定drawtext函式的輸出方式,顯示裝置共有兩種輸出方式 opaque和transparent。opaq...