iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 18
2

Function Declaration

一直以為定義function的方法只有

function add(x) {
  return x + 2;  
}

add(3);  // 5

這種方法叫做Function Declaration,
Declared functions不會立刻被執行,
而是先被存起來,
當被調用的時候再執行。

Function Expressions

Function Expressions可以將function存在一個變數當中,
這個變數就可以和function一樣使用,
存在這個變數中的function是一個匿名function。

var add = function(x) {
  return x + 2;
};

add(3); // 5

Function Hoisting

和變數一樣,function也有hoisting的特性。
但是僅限於function declaration

add(2); //4

function add(x) {
  return x + 2;
}
add(2); // add is not function

var add = function(x) {
  return x + 2;
}

如果console.log(add)會得到undefined,跟變數的情況一樣。

Self - Invoking

Function Expressions 在寫完後可以直接調用,
而不用經過call function這個步驟,
只要在function的後方加上() 既可直接調用。
另外要在function的周圍加上()來指出是 function expressions。

var sayHi = (function(x) {
  console.log('Hi'); // Hi
})();

Parameter、Argument

Parameter、Argument拿去給辜狗翻譯的話,
兩者都是參數的意思。
倆著的差別是:
Parameter是在定義function時參數的名子,
Argument是傳給function的值。

function add(x) {  // x是parameter
  return x + 2;  
}

add(3);  // 3 是argument

Parameter Defaults

如果call function時少傳了argument,
這時候這個argument就會被賦予undefined

var foo = function(x, y) {
  console.log(x + ' and ' + y);
};

foo(1); // "1 and undefined"

上一篇
[17] IDKJS - Hoisting
下一篇
[19] IDKJS - Function Invocation
系列文
我在繡房繡小主常服的日子-- 初入前端工程師的第一個小挑戰30

尚未有邦友留言

立即登入留言