通過構造器的方式來建立函數,最後一個參數為函數體其他為形參
由于函數體是通過字元串拼接的,是以我們可以用這個特性來實作代碼的組合
還可以用這個特性來實作json字元串轉對象
甚至我們可以利用它來實作重載運算符
我們可以将傳回的函數作為構造器來建立對象
函數名加()可以執行一個函數
那如果沒有函數名呢
也就是不支援直接這麼寫,我們需要将以上函數改成一段表達式,将函數進行運算就成表達式了
那麼怎麼執行它呢,在函數後面加()
以上代碼不太優雅對吧,我們可以用一個()将它包起來
()也是會進行運算的
隻要你給函數傳遞參數它就會進行運算,并不會因為你沒有使用它
非惰性求值得另外一個例子就是在使用alert時
第一個輸出2是因為alert隻接受一個參數,但由于函數是不限制參數個數的并且是非惰性求值是以alert中的第二個參數還是會被運算隻是沒有被alert使用罷了
callee的意義就在于當我們使用匿名函數時可以去調用函數本身
還有一種情況是當我們重寫函數時
caller的意義就在于我們能夠知道此函數是被誰調用的