1. 程式人生 > >學習 JavaScript (六)核心概念:函式

學習 JavaScript (六)核心概念:函式

基本知識

函式對於我們來說,不算陌生的東西。中學就已經有了函式的概念,比如:

y = f(x)

輸入一個數 x,能夠得到與之對應的一個數 y。也就是說,f(x) 的有一個返回值,這是函式在數學上的定義。但是在 JavaSciprt 中,我們把函式看成是發生器,在內部可以進行一系列運算,可以有返回值,也可以沒有返回值。

函式是用關鍵字 function 來宣告,後面跟一組引數以及函式體,基本的語法如下所示:

function 函式名字 (引數 1,引數 2,引數 3){
    函式體
}

如果一個函式有返回值,我們可以看到關鍵字 return 。在 return 後面發生的一切都沒有用了,執行完 return 函式立即退出。一個返回 Hello World 的示例:

function sayHello(arg1, arg2){
    return arg1 + arg2
    alert("貓咪")
}

sayHello("Hello", "World"); // 會返回 Hello World ,但是 "貓咪" 不會出現。

不用返回值,函式也可以執行的:

function sayHello(arg1, arg2){
    alert("我就不返回值")
}

sayHello("Hello", "World"); // 會彈提示框,而不是引數

函式要麼有返回值,要麼沒有返回值。像 return 後面不跟東西,是不推薦這麼幹的,這樣會導致除錯困難。

關於引數

引數有很多有趣的地方,JavaScript 在定義函式的時候,識別符號可以沒有,可以有很多個;在使用函式的時候,傳入的引數可以沒有,可以有很多個。

我們應該瞭解的:

  1. 引數不能命名成 eval 或者 arguments;
  2. 引數在函式內部是以陣列的形式存在,我們可以訪問 argument 物件得到;
  3. 所有引數都是值,不可能通過引用傳遞引數;
  4. JavaScript 函式不能像 Java 那樣實現過載(兩個名字相同的函式卻是兩個不同的函式),後者會覆蓋前者。這是因為引數是一個數組,沒有函式簽名的說法。可以判斷引數的型別或者大小,return 不同的值,實現不完美的過載;
  5. 一般我們稱 JavaScript 的引數為形參,是因為引數的名字和傳入的值之間不受名稱的影響,有的語言在呼叫函式時,傳入的引數名稱必須和定義的識別符號一致才可以呼叫。這是因為解析器不會校驗引數名,只關心引數的個數和相對位置。

歡迎大家關注微信公眾號:** 視覺化技術( visteacher )**

不僅有前端和視覺化,還有演算法、原始碼分析、書籍相送

各個分享平臺的 KurryLuo 都是在下。

用心學習,認真生活,努力工作!