閉包和toString方法的使用

2022-09-04 21:51:21 字數 788 閱讀 8726

今天,有個同學問我乙個問題:

add(1)  //1

add(1)(2) //3

add(1)(2)(3) //返回6

我想了半天,實在想不出來,在我看來, 這是矛盾的,

因為通過add(1)(2)返回3,要求add(1)的返回值是乙個函式,才能接收引數2,但是add(1)卻是1,不管是字串還是數字,這都是不可能的。

後來看了答案,才恍然大悟,原來這列印出來的函式的執行結果,必須呼叫tostring方法。

1

function demo(...args)

8 fn.tostring =function ()

11return

fn;//第一次執行時才會執行,以後的所有執行都是執行fn函式;

12 }

第二個同學問我的問題是:如何用最簡單的**實現快速排序;

快速排序的思想是:對一組數字,進行兩步走:先找出參照物(通常是第乙個),其次遍歷這組數,比參照物大的放右面,比參照物小的放左邊, 然後遞迴對左右快速排序。**實現如下:

1

var arr = [5, 2, 6, 4, 3, 8, 7, 1];

2function

sort(arr) else14}

15return

sort(left).concat(leader).concat(sort(right))//遞迴遍歷左右兩個陣列16}

17 console.log(sort(arr));

equals方法和toString方法

object類中有兩個比較重要的方法 equals 和 tostring 如下 public boolean equals object obj public string tostring string類中重寫了這兩個方法,如下 public boolean equals object anobj...

toString方法 和equals方法

我們通常在控制台輸出時使用system.out.print print只能直接輸出基本型別和字串,對於其他的型別直接輸出將會輸出 開頭的引用 位址 因此若需要輸出對應的內容則需要使用tosring方法。tostring方法屬於object,object是所有類的頂級父類,所以所有類都繼承了tostr...

閉包的特點和判斷閉包的執行結果

全域性變數和區域性變數都有缺點,全域性變數容易造成全域性汙染,而區域性變數則無法共享,不能長久儲存,為了使變數既可以共享,長久儲存,又不會全域性汙染,可以使用閉包。閉包的三個特點是 1.定義外層函式,封裝被保護的區域性變數 2.定義內層函式,執行對外層函式區域性變數的操作 3.外層函式返回內層函式的...