天天看點

走進JavaScript——重拾函數

通過構造器的方式來建立函數,最後一個參數為函數體其他為形參

由于函數體是通過字元串拼接的,是以我們可以用這個特性來實作代碼的組合

還可以用這個特性來實作json字元串轉對象

甚至我們可以利用它來實作重載運算符

我們可以将傳回的函數作為構造器來建立對象

函數名加()可以執行一個函數

那如果沒有函數名呢

也就是不支援直接這麼寫,我們需要将以上函數改成一段表達式,将函數進行運算就成表達式了

那麼怎麼執行它呢,在函數後面加()

以上代碼不太優雅對吧,我們可以用一個()将它包起來

()也是會進行運算的

隻要你給函數傳遞參數它就會進行運算,并不會因為你沒有使用它

非惰性求值得另外一個例子就是在使用alert時

第一個輸出2是因為alert隻接受一個參數,但由于函數是不限制參數個數的并且是非惰性求值是以alert中的第二個參數還是會被運算隻是沒有被alert使用罷了

callee的意義就在于當我們使用匿名函數時可以去調用函數本身

還有一種情況是當我們重寫函數時

caller的意義就在于我們能夠知道此函數是被誰調用的