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,195评论 0 13
  • (a fork of Airbnb's Javascript Style Guide) Strikingly ES...
    飘零_zyw阅读 1,190评论 1 2
  • TypeScript简介: 微软开发 javascript的超集 遵循ES6脚本语言的规范 添加了遵循ES6的语...
    咖啡浮点阅读 852评论 0 3
  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 7,814评论 2 17
  • 春天老了 如同不能再食用的笋 香椿树下的人仰着头 满眼满眼的绿叶 叹息声比春天还老 还没吃上几口呐 怎么就老了 夏...
    读云轩札记阅读 207评论 0 0