1. 程式人生 > >關於JS函式的一些基本理解

關於JS函式的一些基本理解

funtion name(arg1,arg2){ ... } 所有的function都是物件 它的name就是指標 函式定義也可以寫為:var name = new Function ("arg1","arg2","...") //與上等價 這可看出 function實際上是物件,name就是這個物件的引用(指標)
也可寫為: var sum = function(arg1,arg2){ ... }; //此為賦值語句,所以末尾理應要;



函式宣告會將引用提前就賦給name,而通過函式賦值的則不會提前將引用賦給name 例:
//正常執行 name(); function name (){ ... }

//編譯出錯 name(); var name = function(){ ... };
在function內 arguments.callee() 意思為呼叫本函式;// 這種寫法是避免了緊密耦合,即我將name引用賦給別人後也可以正常執行 如:
function name(){ return name() }
var otherName = name; name = null; //將name的引用為空 otherName(); // 執行報錯 因為name的引用已經空了,在otherName 裡呼叫name函式,所以報錯
function name(){ return arguments.callee(); } var otherName = name; name = null;
otherName(); //正常執行,即使name指向為空,但函式內呼叫的為arguments.callee(); 即呼叫本函式,本函式在此情況下為otherName();