首頁  >  文章  >  web前端  >  javascript函數基礎之函數宣告、提升、重複、刪除實例詳解

javascript函數基礎之函數宣告、提升、重複、刪除實例詳解

伊谢尔伦
伊谢尔伦原創
2017-07-25 09:50:451617瀏覽

函數宣告語句

  使用function關鍵字,後面接著一組參數以及函數體

function funcname([arg1 [,arg2 [...,argn]]]){
    statement;
}

  funcname是要宣告的函數名稱的識別碼。函數名稱之後的圓括號中是參數列表,參數之間使用逗號分隔。當呼叫函數時,這些標識符則指稱傳入函數的實參

  [注意]function語句裡的花括號是必需的,這和while循環和其他一些語句所使用的語句塊是不同的,即使函數體內只包含一條語句,仍然必須使用花括號將其括起來

function test()//SyntaxError: Unexpected end of input
function test(){};//不报错
while(true);//不报错

提升

  在作用域系列博文的第三篇中,提到過函數聲明提升(hoisting),函數名稱和函數體都提升

foo();
function foo(){
    console.log(1);//1
}

  上面這個程式碼片段之所以能夠在控制台輸出1,就是因為foo()函數宣告進行了提升,如下所示:

function foo(){
    console.log(1);
}
foo();

重複

  變數的重複宣告是無用的,但函數的重複宣告會覆寫前面的宣告(無論是變數或函數宣告)

//变量的重复声明无用var a = 1;
var a;
console.log(a);//1
//由于函数声明提升优先于变量声明提升,所以变量的声明无作用
var a;
function a(){
    console.log(1);
}
a();//1
//后面的函数声明会覆盖前面的函数声明
a();//2
function a(){
    console.log(1);
}
function a(){
    console.log(2);
}

  所以,應該避免在同一作用域中重複宣告

刪除

  和變數宣告一樣,函數宣告語句所建立的變數無法刪除

function foo(){
    console.log(1);
}
delete foo;//false
console.log(foo());//1

以上是javascript函數基礎之函數宣告、提升、重複、刪除實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn