1. 语法

function(a, b, ...theArgs) {
  // ...
}

如果一个函数的最后一个形参是以 … 为前缀的,则在函数被调用时,该形参会成为一个数组,数组中的元素都是传递给该函数的多出来的实参的值。

在上例中,theArgs 会包含传递给函数的从第三个实参开始到最后所有的实参 (第一个实参映射到 a, 第二个实参映射到 b)。

基本参考:
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Functions/Rest_parameters

2. 重点

说下...在函数调用时,加与不加什么区别?

下面例子使用typescript实现,需要安装:

npm install -g typescript

Babel也支持ES6新特性,并转成浏览器兼容的语法。

例子:

function fun(p1: string, ...args) {
    console.log("len = %d", args.length);
}

fun("hello", ...[1,2,3]); // len = 3
fun("hello", [1,2,3]); // len = 1,当做数组对象

2.1 保存为test.ts,typescript转成js

tsc --outFile test.js test.ts

2.2 查看测试结果:

nodejs test.js

...是当做3个参数(reset parameter),不加只是作为1个数组参数。

vim ctags支持javascript, typescript, coffeescript语法

vi $HOME/.ctags,添加如下代码: --regex-JavaScript=/(^|^[^\/*]+[[:blank:]])([A-Za-z0-9._$]+)[[:blank:]]*[:=][[:blank:]]*new[[:blank:]]+Object\(/\2...

阅读全文

解决Cannot find module ‘meteor/meteor’ ‘meteor/check’ ‘meteor/mongo’

meteor 对typescript的支持上存在问题,造成typescript中引入的一些包无法找到。 解决方法: 添加 meteor.d.ts 的定义补充文件到/ 下载位置: wget https://...

阅读全文