22 箭頭函數

箭頭函數
      爲何:
			讓this始終指向包含它的對象
      是什麼:
			箭頭左邊是參數,右邊是函數體
 	  只包含一個表達式,連{ ... }和return都省略掉了。
      還有一種能夠包含多條語句,這時候就不能省略{ ... }和return:
	   
		var fn = x => x * x;
	
		x => {
			if (x > 0) {
				return x * x;
			}
			else {
				return - x * x;
			}
		}

	this
		箭頭函數看上去是匿名函數的一種簡寫,
		但實際上,箭頭函數和匿名函數有個明顯的區別:箭頭函數內部的this是詞法做用域,由上下文肯定。
                  this默認指向全局變量或undefined(strict模式下的報錯),只有對象調用時,才讓this指向對象
		var obj = {
			birth: 1990,
			getAge: function () {
				var b = this.birth; // 1990
				var fn = function () {
					return new Date().getFullYear() - this.birth; // this指向window或undefined
				};
				return fn();
			}
		};
		
		var obj = {
			birth: 1990,
			getAge: function () {
				var b = this.birth; // 1990
				var fn = () => new Date().getFullYear() - this.birth; // this指向obj對象
				return fn();
			}
		};
相關文章
相關標籤/搜索