上次聊了關於定義函數的知識,還有參數方面的,此次先補充一點參數小知識,還有簡單的講一下閉包。數組
引入的參數會保存在arguments數組對象中,第一個引入的參數保存在aruguments[0]中,以此類推,參見如下代碼:閉包
var myArr = ["hangzhou", "shanghai", "beijing", "guangzhou"]; function foo(obj) { console.log(arguments[0]);//["hangzhou", "shanghai", "beijing", "guangzhou"]; console.log(arguments[0][1]);//shanghai } foo(myArr);
function outside(x) { function inside(y) { return x + y; } return inside; } fun_inside = outside(5); console.log(fun_inside); result = fun_inside(3);//return 8 result1= outside(5)(3);//return 8
咱們都知道,函數內部是能夠讀取外部定義的變量的。在這裏,outside
函數包含了一個內部函數inside
,因此inside
能夠使用outside
引入的參數。咱們把函數inside
做爲返回值賦給fun_inside
,固然,同時返回的還有x
。此時咱們再執行fun_inside
而且傳入一個y
就能返回二者之和,最後一行只是把兩個參數同時傳入,其餘無異,這就是一個很簡單的閉包。
下面是執行這段代碼後監視窗的結果。
更深刻的下一期再講,由於做者也正在學習啦~~ide
var myArr = ["hangzhou", "shanghai", "beijing", "guangzhou"]; console.log(myArr);//["hangzhou", "shanghai", "beijing", "guangzhou"] console.log("test:" + myArr);//test:hangzhou,shanghai,beijing,guangzhou
爲何輸出內容會不一樣呢?做者到如今也不解,不過對程序運行是沒有影響的。有大神懂的話,求指導???函數