深刻淺出JavaScript:理解函數

理解函數

文字居多,各位看官不要厭煩呀~~函數

  • 在JavaScript中,每一個函數其實都是一個Function對象。(不是有句話說:一切皆對象?)this

  • 函數老是會返回一個值,可是一個過程有可能返回一個值,也有可能不返回。(因此函數不是過程~)code

    • 若是一個函數中沒有使用return語句,則它默認返回undefined。要想返回一個特定的值,則函數必須使用 return 語句來指定一個所要返回的值。(使用new關鍵字調用一個構造函數除外)。對象

  • 調用函數時,傳遞給函數的值被稱爲函數的實參(值傳遞),對應位置的函數參數名叫做形參。ip

    • 若是實參是一個包含原始值(數字,字符串,布爾值)的變量,則就算函數在內部改變了對應形參的值,返回後,該實參變量的值也不會改變。字符串

    • 若是實參是一個對象引用,則對應形參會和該實參指向同一個對象。假如函數在內部改變了對應形參的值,返回後,實參指向的對象的值也會改變。io

終於有代碼了,撒花~~console

/* 定義函數 myFunc */
 function myFunc(theObject)
 {
   //實參 mycar 和形參 theObject 指向同一個對象.
   theObject.brand = "Toyota";
 }
 
 /*
  * 定義變量 mycar;
  * 建立並初始化一個對象;
  * 將對象的引用賦值給變量 mycar
  */
 var mycar = {
   brand: "Honda",
   model: "Accord",
   year: 1998
 };

 /* 彈出 'Honda' */
 window.alert(mycar.brand);

 /* 將對象引用傳給函數 */
 myFunc(mycar);

 /*
  * 彈出 'Toyota',對象的屬性已被修改.
  */
 console.log(mycar.brand);

(關於函數中的this,順便說點)function

在函數執行時,this 關鍵字並不會指向正在運行的函數自己,而是指向調用該函數的對象。
因此,若是你想在函數內部獲取函數自身的引用,只能使用函數名或者使用arguments.callee屬性
(嚴格模式下不可用),若是該函數是一個匿名函數,則你只能使用後者。匿名函數

相關文章
相關標籤/搜索