TS 函數新特性

# 1:rest and spread操作符 --- ...args


No 1 : 用來聲明任意數量的方法參數

function test(...args) {

args.forEach(function (arg) {

console.log(arg)

})

};

test(1, 2, 3, 4);

//打印1,2,3,4

轉JS:

function test() {

var args = [];

for (var _i = 0; _i < arguments.length; _i++) {

args[_i] = arguments[_i];

}

args.forEach(function (arg) {

console.log(arg);

});

};

test(1, 2, 3, 4);

No 2:也可以對聲明了固定數量參數的函數進行參數數量不等的調用

function test(a,b,c) {

console.log(a);

console.log(b);

console.log(c);

};

var arr = [1, 2];

test(...arr);//打印1,2,undefined

var arr2 = [1, 2, 3, 4, 5, 6];

test(...arr2);//只識別前三個參數,打印1,2,3


# 2:generator函數


No 1:控制函數的執行過程

No 2:通過function*聲明一個generator函數在函數中添加yield和next()可對其進行打斷和分布執行操作

function* test(){

console.log("start");

yield;

console.log("finish");

}

var fun1 = test(); ??//須將函數聲明為變量使用此方法

fun1.next();

fun1.next();


每個.next()執行yield分割的一段代碼,第一個fun1.next();執行至yield之前停止打印出"start",第二個fun1.next()執行之后的代碼,打印出"finish"



# 3:destructuring?析構表達式


No 1:通過表達式將對象或數組拆解成任意數量的變量

function fun() {

? ? return {

? ? ? ? title:"xxj",

? ? ? ? total:36

? ?}

}

var { title , total?} =fun(); //變量名與函數中的屬性名對應相同

var { title :name , total?} =fun(); // 或者起個別名

console.log(title);

console.log(name);

這句話等價于 ?如下:

var aa =fun();

var title = aa.title;

var total = aa.total;

No 2:析構表達式的嵌套 ?--- 從對象拆值

function fun() {

? ?return {

? ? ? ?title:"xxj",

? ? ? ? total:{

? ? ? ? ? ? ? total1:25,

? ? ? ? ? ? ? total2:57

? ? ? ?}

? ?}

}

var { title , total:{ total2 } } =fun();

console.log(total2);

No 3:析構表達式的嵌套? --- 從數組拆值

var arr = [1,2,3,4];

var [num1,num2]=arr;

console.log(num1,num2); ? ?//1 2

var [,,num3,num4]=arr;

console.log(num3,num4); ? ? //3 4 用逗號空出對應位置即可跳躍取值

var [num5,,num6]=arr;

console.log(num5,num6); ? ?//1 3

var [num7,...others]=arr;

console.log(num7,others); ?//1 [2,3,4] *此時將剩余的三個數打包放進others中

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 第2章 基本語法 2.1 概述 基本句法和變量 語句 JavaScript程序的執行單位為行(line),也就是一...
    悟名先生閱讀 4,196評論 0 13
  • (a fork of Airbnb's Javascript Style Guide) Strikingly ES...
    飄零_zyw閱讀 1,190評論 1 2
  • TypeScript簡介: 微軟開發 javascript的超集 遵循ES6腳本語言的規范 添加了遵循ES6的語...
    咖啡浮點閱讀 862評論 0 3
  • 工廠模式類似于現實生活中的工廠可以產生大量相似的商品,去做同樣的事情,實現同樣的效果;這時候需要使用工廠模式。簡單...
    舟漁行舟閱讀 7,842評論 2 17
  • 春天老了 如同不能再食用的筍 香椿樹下的人仰著頭 滿眼滿眼的綠葉 嘆息聲比春天還老 還沒吃上幾口吶 怎么就老了 夏...
    讀云軒札記閱讀 207評論 0 0