js函數定義及一些說明

來源:互聯網
上載者:User

標籤:java   strong   使用   javascript   cti   類   

1.javascript定義函數的三種方法
一、function語句//這個方法比較常用
function fn(){
  alert("這是使用function語句進行函數定義");
}
fn();

二、Function()建構函式
var F = new Function("a","b","alert(a+b)");
F(a,b);

其實相當於如下代碼:
function F(a,b){
  alert(a+b);
}

三、函數直接量//這個方法比較常用
var zhenn = function(){
  alert("zhenn");
}
zhenn();
雖然函數直接量建立的是未命名函數,但是它的文法也規定它可以指定函數名,這在編寫調用自身的遞迴函式時非常有用,例如:
var f = function fact(x) {
if (x <= 1) {
return 1;
} else {
return x * fact(x - 1);
}
};

註:它並沒有真正建立一個名為fact()函數,只是允許函數體用這個名字來引用自身。JavaScript1.5之前的版本中沒有正確實現這種命名的函數直接量。

2.其他說明
一、建構函式
其實從字面上理解,建構函式似乎也是函數,其實它並不是函數,而只是一種函數模型。
要執行個體化才能運行,就跟我們寫的類一樣,要new一下才能用。
function Fn(){ //定義建構函式  
  this.elem ="字串";  
  this.fn = function(){    
    alert("函數");  
  }
}
var f = new Fn(); //執行個體化
alert(f.elem);
f.fn();

二.Function()建構函式和函數直接量差別 Function()建構函式和函數直接量之間的差別有一點就是:使用建構函式Function()建立的函數不使用詞法範圍,相反的,它們總是被頂級函數來編譯,如: var y = "global";

function constructFunction() {
var y = "local";
//Function()建構函式
return new Function("return y;");//不使用局部範圍
}
function constFunction() {
var y = "local";
//函數直接量
var f = function () {
return y;//使用局部範圍
};
return f;
}
alert(constructFunction()()); //顯示 global,因為Function()建構函式返回的函數並不使用局部範圍
alert(constFunction()());//顯示 lobal,因為函數直接量返回的函數並使用局部範圍

三.函數直接量詳細說明
在一些架構代碼中偶爾會看到這樣的寫法:(如jquery)
代碼一:
var tempObject = function doFunction() {
...
}();

代碼二:
(function doFunction() {
...
})();

如果我把這個單獨拿出來,你可能也一眼就看出來這段代碼的巧妙之處了--它在建構函式直接量的同時直接運行了此函數,而第二種代碼相對第一種而言更簡潔了(PS:第二種代碼用一對小括弧避免了編譯錯誤)。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.