函數宣告語句
使用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中文網其他相關文章!