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)