2016
Apr
02

JavaScript 中使用 function 的方式為在 function 名稱後面加上大小括號: funcName() , 但我們也可以改變成另外一種寫法,就能夠省略括號。

一般來說當你想要使用某一個 JavaScript function 時,你必須先定義一個 function 如:

Example
  1. function jsMain() {
  2. var ret;
  3. ...xxx
  4. return ret;
  5. }

接著我們會呼叫它 var str = jsMain() ,這是大家平常會寫的 code 。

Immediately invoked function expression

但是你有沒有曾經看過下面這種寫法:

Example
  1. (function () {
  2. console.log("Executed!");
  3. })();

這個 function 先被一組括號括起來,形成一個獨立的變數空間 (function scoping),然後再用 () 來執行,這個寫法也被稱為 Immediately invoked function expression ,這種 function 的執行方式看起來好像括號不是直接寫在 function 上,但也是需要括號的 ~~

new

我們可以用 new 來 initialize 一個 Object ,也可以非正規的偷用來執行 function ,但是只能在你不須要傳入任何參數的時候,

Example
  1. function main() {
  2. console.log("Executed!");
  3.  
  4. }
  5. new main;

toString

toString 大家應該會比較熟悉一點,在 JavaScript 中,當程式需要將物件轉換成 string 的時候,就會對該物件執行 toString method 。

toString example
  1. function main() {
  2.  
  3. }
  4. main.toString = function () {
  5. console.log("Executed!");
  6. return "";
  7. }
  8.  
  9. var ret = "a" + main;

valueOf

valueOf 是指將回傳物件的原生數值(Primitive Value), JavaScript 中每一種變數都是一個物件,例如一個變數 = 20,它屬於 Number 這個物件,而他的 Primitive Value 是 20

valueOf example
  1. function main() {
  2.  
  3. };
  4. main.valueOf = function () {
  5. console.log("Executed!");
  6. return ""
  7. };
  8. var ret = 0 + main;

setTimeout

最後一種方式是使用 setTimeout ,這個寫法也是可以不需要括號的,請看範例

Example
  1. function main() {
  2. console.log("Executed!");
  3. };
  4. setTimeout(main, 0);

相關文章


回應 (Leave a comment)