建立: 2017/10/09
更新: 2017/11/03 加上【wip】數組
廢棄: 2019/02/19 重構此篇。原文納入廢棄閉包
增長【廢棄中】標籤與整體任務app
結束: 2019/03/12 完成廢棄, 刪除【廢棄中】標籤, 添加【廢棄】標籤函數
結束: 2019/03/03 完成廢棄, 刪除【廢棄中】標籤, 添加【廢棄】標籤this
函數的定義 | |||||||||||||||||||||||||||||||
全部聲明不分順序,自動排序 | |||||||||||||||||||||||||||||||
普通聲明 | function test(a) { return a; } 只有這種在定義後在程序任何位置均可以呼出 |
||||||||||||||||||||||||||||||
函數字符來定義 | var sample = function(a) { 不會被預處理prototype
|
||||||||||||||||||||||||||||||
Object來定義 | var name = new function("x", "y", ... , "process")線程 最後一個是處理,前面都是參數指針 不會被預處理code
|
||||||||||||||||||||||||||||||
箭頭函數式來定義 | var sample = x => x*x; 不會被預處理 |
||||||||||||||||||||||||||||||
嵌套函數 | 函數內部的函數
|
||||||||||||||||||||||||||||||
函數的呼出 | |||||||||||||||||||||||||||||||
函數的呼出方法 | function sample() {}
|
||||||||||||||||||||||||||||||
即時函數 (無名函數) |
定義與呼出同時進行
|
||||||||||||||||||||||||||||||
函數的參數 | |||||||||||||||||||||||||||||||
參數的省略 | 省略掉的爲undefined undefined是沒有賦值 null是賦予的是空值 |
||||||||||||||||||||||||||||||
不固定長度的參數 | 全部函數內部可用arguments
|
||||||||||||||||||||||||||||||
傳值和傳參 | object參數傳送的是參照(指針) | ||||||||||||||||||||||||||||||
遞歸函數 | |||||||||||||||||||||||||||||||
三種寫法 |
|
||||||||||||||||||||||||||||||
程序的編譯與運行 | |||||||||||||||||||||||||||||||
生成全局對象 | |||||||||||||||||||||||||||||||
解析程序 | |||||||||||||||||||||||||||||||
運行程序 | |||||||||||||||||||||||||||||||
單線程 | |||||||||||||||||||||||||||||||
call對象及本地變量 | |||||||||||||||||||||||||||||||
this的值 | 被呼出函數所屬對象 函數內部函數的this是全局變量 |
||||||||||||||||||||||||||||||
命名空間 |
var a = "a"; function f() { var b = "b"; function g() { var c = "c"; console.log(a+b+c); } } f();
|
||||||||||||||||||||||||||||||
垃圾回收 | 釋放從全局對象沒法到達的量 不用在乎 |
||||||||||||||||||||||||||||||
閉包 | |||||||||||||||||||||||||||||||
JavaScript的全部函數都是閉包 閉包內部能夠有函數(閉包) |
|||||||||||||||||||||||||||||||
應用 | |||||||||||||||||||||||||||||||
命名空間 | |||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||
用對象管理程序本地代碼 |
var myApp = myApp || {}; myApp.login = ...; myApp.configs = {}; //部分空間內部再劃分部分空間
全部東西追加成屬性 |
||||||||||||||||||||||||||||||
用函數做爲命名空間 |
(function () { // 程序全部內容寫在這裏 })();
module模式 // 做爲即時函數,把module相關傳遞給指定參數 var Module = Module || {}; (function (_module) { var name = "none"; // 私有變量 function getName () { // 私有方法 return name; } _module.showName() = function () { // 公共方法 console.log(getName()); } })(Module);
|
||||||||||||||||||||||||||||||
做爲對象(Object)的函數 | |||||||||||||||||||||||||||||||
函數也是對象 | ● 能夠代入變量,對象屬性, 數組元素 ● 能夠做爲函數的參數, 返回值 ● 能夠有屬性和方法 ● 能夠做爲不帶名字的字符, 即無名函數 function () {} ● 能夠動態生成 |
||||||||||||||||||||||||||||||
函數的屬性(property) |
|
||||||||||||||||||||||||||||||
添加自定義屬性 |
function test() {...} test.newProperty = "sample"; // 和其餘對象添加屬性同樣寫法
|
||||||||||||||||||||||||||||||
高階函數 | |||||||||||||||||||||||||||||||
定義 | 以函數爲參數或返回值的函數 | ||||||||||||||||||||||||||||||
回調函數 | |||||||||||||||||||||||||||||||
ES6關於函數的擴張 |