javascript匿名函數的用法
摘要:
本文講解的是javascript最基礎也是最重要的東西--函數,之所以寫這篇文章,是因為面試的時候問到了,也算是温故而知新了。
先上個例子,如果你看懂了,説明你已經理解了本文要講的。
複製代碼 代碼如下:var f = (function() {
function f() {return 10;}
return f();
function f() {return 20;}
var f = 30;
})();
(f);
javascript高級程序設計中這樣描述函數--可以封裝任意多條語句,而且可以在任何地方、任何時候調用執行。之前介紹過了strict mode,嚴格模式對函數有一些限制:
① 不能把函數命名為eval或arguments
② 不能把參數命名為eval或arguments
③ 不能出現兩個命名參數同名的情況
發生以上情況就會導致語法錯誤,代碼無法執行。
函數定義
函數定義分為三種
1、構造函數
複製代碼 代碼如下:var fun = new Funciton();
2、普通定義
複製代碼 代碼如下:function fun() {}
3、函數式定義
複製代碼 代碼如下:var fun = function() {};
這三種方式都可以定義函數fun。
參數
函數不介意傳遞進來多少個參數,也不在乎傳進來的參數是什麼數據類型。即便你定義的函數只接收兩個參數,在調用這個函數時也未必一定要傳遞兩個參數。可以傳遞一個、三個甚至不傳遞參數。原因是參數在內部是用一個數組來表示的。在函數體內可以通過arguments對象來訪問參數數組,舉個例子
複製代碼 代碼如下:function sayHi() {
alert("Hello " + arguments[0] + "," + arguments[1]);
}
通過訪問arguments對象的length屬性來獲知有多少個參數。函數的length會返回函數的參數個數。
注意:所有參數傳遞的`都是值,不可能通過引用傳遞參數。
函數不能重載,只能重寫
如果定義了兩個名字相同的函數,則該名字只屬於最後定義的函數,舉個例子:
複製代碼 代碼如下:
function add(num) {
return num + 100;
}
function add(num) {
return num + 200;
}
var result = add(100) //300
注意:函數在執行完return語句之後停止並立即退出。
函數種類
函數分為兩種一種是有名函數,另一種是匿名函數。例如下面的有名函數
複製代碼 代碼如下:function fun() {
}
如果調用的話,只需要fun()就可以。
匿名函數,顧名思義就是沒有函數名。例如
function() {}
函數調用是通過函數名來調用,匿名函數怎麼調用呢?一種就是將匿名函數賦給一個變量,讓這個變量充當函數名。另一種就是用()來調用,例如下面三種方法
1、(function() {return;}());
2、(function() {return;})();
3、function() {return;}();
例子:
複製代碼 代碼如下:
(function(x, y) {
alert(x + y);
})(2,3);
//alert(5)
2和3將會作為參數傳遞給x和y
下面就來講講最上面的例子,這個例子裏面涉及到閉包,後面會説
首先定義一個變量f,然後賦值一個匿名函數,這裏呢需要注意一點函數裏所有變量的定義都會被前置,所以匿名函數裏的執行順序是
複製代碼 代碼如下:
var f = (function() {
var f = 30;
function f() {return 10;}
function f() {return 20;}
return f();
})();
外面的變量f和裏面的變量f不在同一個作用域內(閉包),所以互不影響。因為函數不能重載,所以外面變量f=(function f() {return 20;})();,所以最終輸出的是20。
-
如何理解Javascript的caller,callee,call,apply區別
在提到上述的概念之前,首先想説説javascript中函數的隱含參數:argumentsarguments該對象代表正在執行的函數和調用它的函數的參數。[function.]arguments[n]參數function:選項。當前正在執行的Function對象的名字。n:選項。要傳遞給Function對象的從0開始的參數值...
-
JavaScript 小型打飛機遊戲實現和原理説明
JavaScript小型打飛機遊戲實現和原理説明玩法説明:上下左右控制移動,空格發彈。每打中一個敵機就加100分,每提升5000分,玩家的飛機的一次發彈數就加一,最多四,被敵機撞到或者讓敵機飛到底部就算輸。。。。演示代碼:http://demo./js/FlyBeat/遊戲目前的功能還是比較簡...
-
如何獲取PHP數組的鍵與值呢
array_keys($array);//獲取數組(字典)的所有鍵值,返回一個鍵值數組。array_values($array)://獲取數組的所有value值,飯回一個數組。<?php$json='{"a":1,"b":2,"c":3,"d":4,"e":5}';//註明:value不帶雙引號時,其值只能是數字。【!!!注意:大括號兩邊只能是單引號,...
-
Dreamweaver輸入的文本字體怎樣加粗
Dreamweaver輸入的文本字體怎麼加粗?Dreamweaver中想要加粗輸入的文本,該怎麼加粗呢?這都是最基礎的教程,很簡單,需要的朋友可以參考下,下面就跟隨小編一起來看看吧!Dreamweaver怎麼給字體加粗,下面我們就來看看詳細的.教程。1、打開我的軟件2、文件新建一個3、新建...