函數定義javascript
函數語句定義java
function(a,b){ return a+b; }
表達式定義app
var add = function(a,b){return a+b};
//函數表達式能夠包含名稱,這在遞歸時頗有用 var f = function fact(x){ if(x<=1) {return 1; }else { return x*faxt(x-1); } }函數
以表達式方式定義的函數,函數的名稱是可選的。若是函數定義表達式包含名稱,函數的局部做用域將會包含一個綁定到函數對象的名稱,實際上,函數的名稱將成爲函數內部的一個局部變量this
函數命名規範 spa
1.like_this()第一個字符爲小寫,當包含多個單詞時候,單詞如下劃線分割 prototype
2.likeThis()第一個字符爲小寫,當包含多個單詞時候,除第一個單詞之外的單詞首字母使用大學字母 對象
3.內部函數或私有函數,一般以一條下劃線爲前綴blog
注:函數聲明語句‘被提早到外部腳本或外部函數做用於頂部,因此能夠被在它定義以前出現的代碼所調用繼承
以表達式方式定義函數前必須把它賦值給一個變量。因此表達式方式定義的函數在定義以前是沒法調用的
函數返回值
嵌套函數
函數調用
做爲函數調用
add(1,2)
根據ECMAScript3和非嚴格的ECMAScript5對函數調用的規定,調用上下文(this的值)是全局對象。然而在嚴格模式下,調用上下文則是undefined。
1 //定義一個函數且調用一個函數來肯定當前腳本運行是否爲嚴格模式 2 var strict = (function(){return this;}());
做爲方法調用
var o = { m:1, n:2, add:function(){ this.result = this.m+this.n; } }
方法調用和函數調用的一個重大區別。----調用上下文
構造函數調用
var o = new Object();
構造函數調用和普通函數調用以及方法調用在實參處理。調用上下文和返回值等方面都有不一樣。
凡是沒有形參的構造函數調用均可以省略圓括號。
var o = new Object(); var o = new Object; //等價
構造函數調用建立一個新的空對象,這個對象繼承自構造函數的prototype屬性,這個函數試圖初始化這個新建立的對象,病將這個對象作爲上下文,所以構造函數可使用this關鍵字來引用這個新建立的對象。
間接調用