通常構成函式主題的js**在定義之時是不會被執行的,只有在呼叫函式是才會被執行
有4種方式可以呼叫js函式
//定義函式 factorial
function factorial()
var probability = factorial(5)
以函式形式呼叫的函式通常不適用this關鍵字
方法呼叫和函式呼叫區別在於:呼叫上下文。
如果有乙個 函式 f 和 物件 o
給o定義乙個m()的方法
o.m = f
給物件o定義方法m(),呼叫時就像這樣
o.m()
其中o就成為呼叫上下文,函式體可以使用關鍵字this引用該物件
乙個具體的例子:
var calculator =
};calculator.add();//方法呼叫1+1的結果
calculate.result // => 2
關鍵字this和變數不同,沒有作用域的限制,巢狀的函式不會從呼叫他的函式中繼承this
如果巢狀函式作為方法呼叫,this值指向呼叫它的物件。
如果巢狀函式作為函式呼叫,this指向全域性物件或undefined。
很多人誤認為呼叫巢狀函式時this會指向呼叫外層函式的上下文。
如果你想這個外部函式的this值時,需要將this值儲存在乙個變數裡,這個變數和內部函式都在同一作用域內。
var o =
}};
構造函式呼叫與函式呼叫、方法呼叫在實參處理,呼叫上下文和返回值方面都有不同。
構造函式呼叫在圓括號裡包含實參列表,則先計算實參表示式,這與函式呼叫和方法呼叫是一致的。
如果建構函式沒有形參,js構造函式呼叫語法是可以省略()的
var o = new object();
var o = new object;//等價
構造函式呼叫建立乙個空物件,繼承自建構函式prototype屬性,建構函式試圖初始這個新建立的物件,作為其呼叫的上下文,因此,建構函式可以使用this來引用這個新建立的物件。
建構函式通常不使用return,當執行完函式體後,會顯示返回。
var args = [girl1, girl2];var animal = new animal();
C 拾遺 函式過載
c 拾遺 函式過載 關於作用域,需要指出幾點事實 用大括號 括起來的區域處於同一作用域,常見的有函式體 for if語句等。同一作用域內不可出現同名的變數,若是函式同名,那就是函式過載問題。不同作用域內同名與否,沒影響。所有的函式之外的區域就是全域性作用域。首先需要指出,同一作用域中的函式才會出現過...
C 拾遺(二 函式)
1.引數陣列。c 的特色,允許函式引數的最後指定乙個引數陣列,可以使用個數不定的引數呼叫,用params關鍵字定義 static double sumvals params double vals return sum 呼叫sumvals 1,2,3 2.值引數和引用引數。引用引數使用關鍵字ref指...
C 拾遺 bind函式繫結
c 拾遺 bind函式繫結 函式繫結bind函式用於把某種形式的引數列表與已知的函式進行繫結,形成新的函式。這種更改已有函式呼叫模式的做法,就叫函式繫結。需要指出 bind就是函式介面卡。include include using namespace std using namespace std ...