ES6对于函数的使用新增了很多实用的API,JS的函数跟很多后台语言PHP,ASP.NET开始看齐:

1. 参数默认值:

以前我们为了给函数创建默认值,必须用一种冗杂的语句,而且有歧义的语句。

//ES5
function myTest(name){
  name = name || "default";
console.log(name);
}
//ES6
function myTest(name = "default"){
console.log(name);
}

在ES5中,如果name传入了布尔值false将会产生歧义,而且也不直观,ES6的语法明显简洁很多。

参数默认值通常写在尾部,以便可以省略赋值。

2. reset参数

reset参数是ES6中用于代替arguments对象的一个方法,arguments是类数组,不完全是数组,无法使用sort,slice等方法,而reset是真正的数组:

//ES5
function sortArray(){
var args = Array.prototype.slice.call(arguments);
args.sort();
}
//ES6
function sortArray(...args){
args.sort();
}

args同样也只能放在末尾

function print(name,city,...others){
var str = name + city;
for(var item of others){
str += item;
}
}
print("mic","shenzhen","male","married");

3. name属性

函数具有name属性返回函数名

function myFunc() {}
myFunc.name // "myFunc"

4. 箭头函数

箭头函数是ES6中简化函数代码的一个重要特性,可以简化代码

//es5
function myFunc(){
console.log("hello");
}
function myFunc(name){
console.log(name);
}
function add2(num){
return num+2;
}
function add2(num1,num2){
  return num1+num2;
}
function myFunc(){
return {
res:true,
msg:""
}
} //es6
()=>console.log("hello"); name=>console.log(name); num=>num+2; (num1,num2)=>num1+num2; ()=>({res:true,msg:""})//返回对象需要括号括起来

在forEach场景比较常见,明显简洁很多:

//es5
var list = [1,2,3,4,5,6]; list.forEach(function(num){
return num + 1;
}); //es6
let list = [1,2,3,4,5,6];
list.forEach(num=>num+1);

箭头函数有一些特点:

(1) 本身没有this对象,引用this对象是指定义箭头函数的对象


//es5
{
addAll:function(pieces) {
var self = this;
pieces.forEach(function(piece){
self.add(piece);
});
},
}
//es6
{
addAll(pieces){
piece.forEach(piece=>this.add(piece));
}
}

有何不同,ES5中forEach函数的this对象默认不是外层函数的this对象,所以需要用一个变量来引用,而箭头函数里面this指的就是定义箭头函数的对象,所以就是当前对象。

(2) 不能作为构造函数

(3) 没有arguments对象,可以用rest替代

(4) 不能作为Generator函数

ES6介绍二 函数的增强的更多相关文章

  1. ES6里关于函数的拓展(二)

    一.构造函数 Function构造函数是JS语法中很少被用到的一部分,通常我们用它来动态创建新的函数.这种构造函数接受字符串形式的参数,分别为函数参数及函数体 var add = new Functi ...

  2. C#构造方法(函数) C#方法重载 C#字段和属性 MUI实现上拉加载和下拉刷新 SVN常用功能介绍(二) SVN常用功能介绍(一) ASP.NET常用内置对象之——Server sql server——子查询 C#接口 字符串的本质 AJAX原生JavaScript写法

    C#构造方法(函数)   一.概括 1.通常创建一个对象的方法如图: 通过  Student tom = new Student(); 创建tom对象,这种创建实例的形式被称为构造方法. 简述:用来初 ...

  3. ES6学习一 JS语言增强篇

    一 背景 JavaScript经过二十来年年的发展,由最初简单的交互脚本语言,发展到今天的富客户端交互,后端服务器处理,跨平台(Native),以及小程序等等的应用.JS的角色越来越重要,处理场景越来 ...

  4. vue框架入门和ES6介绍

    vue框架入门和ES6介绍 vue-mvvm模式,vue是一种轻量级的前端框架,主要为模板渲染,数据同步,组件化,模块化,路由等. https://cn.vuejs.org/ 源码:https://g ...

  5. 《前端之路》- TypeScript(二) 函数篇

    目录 一.定义函数方法 二.定义函数传参 三.可选传参 四.默认传参 五.传递剩余参数 六.函数重载 七.箭头函数 八.总结 一.定义函数方法 在 es5 中定时函数的方法有 命名函数和函数表达式(匿 ...

  6. React和ES6(二)ES6的类和ES7的property initializer

    React与ES6系列: React与ES6(一)开篇介绍 React和ES6(二)ES6的类和ES7的property initializer React与ES6(三)ES6类和方法绑定 React ...

  7. ES6 入门系列 - 函数的扩展

    1函数参数的默认值 基本用法 在ES6之前,不能直接为函数的参数指定默认值,只能采用变通的方法. function log(x, y) { y = y || 'World'; console.log( ...

  8. ES6笔记② 箭头函数

    特性介绍 箭头函数是ES6新增的特性之一,它为JS这门语言提供了一种全新的书写函数的语法. //ES5 function fun(x,y){ return x+y; } console.log(fun ...

  9. Lucene.Net 2.3.1开发介绍 —— 二、分词(五)

    原文:Lucene.Net 2.3.1开发介绍 -- 二.分词(五) 2.1.3 二元分词 上一节通过变换查询表达式满足了需求,但是在实际应用中,如果那样查询,会出现另外一个问题,因为,那样搜索,是只 ...

随机推荐

  1. JQuery的Ajax跨域请求的解决方式

            今天在项目中须要做远程数据载入并渲染页面,直到开发阶段才意识到ajax跨域请求的问题,隐约记得Jquery有提过一个ajax跨域请求的解决方式,于是即刻翻出Jquery的API出来研究 ...

  2. JavaScript类库汇总

    日期处理Moment.js    http://momentjs.cn/  http://momentjs.com/ nodejslinq,jslinq    http://jslinq.codepl ...

  3. Flask系列(六)Flask实例化补充及信号

    一.实例化补充 instance_path和instance_relative_config是配合来用的. 这两个参数是用来找配置文件的,当用app.config.from_pyfile('setti ...

  4. idea使用插件activate-power-mode给编码加上特效和带来乐趣。

    一.安装. 1. 2. 二.使用. 1. 2.

  5. Redis 资料整理

    Redis is an open source, BSD licensed, advanced key-value store. Redis is often referred to as a dat ...

  6. BootStrap一页通(样式+组件+插件)

    bootstrap是一种前端框架,实现美观的页面效果.使用BootStrap的前期工作(注意顺序): <!DOCTYPT html>:因为Bootstrap用到了h5的特性,所以需要此步. ...

  7. PHP设计模式_适配器模式

    将各种截然不同的函数接口封装成统一的API. PHP中的数据库操作有MySQL,MySQLi,PDO三种,可以用适配器模式统一成一致,使不同的数据库操作,统一成一样的API.类似的场景还有cache适 ...

  8. 20135302魏静静——Linux课程期中总结

    Linux期中总结 Linux课程第一周实验及总结:[http://www.cnblogs.com/20135302wei/p/5218607.html] 冯诺依曼体系结构的核心思想是存储程序计算机. ...

  9. Java学习笔记心得——初识Java

    初识Java 拿到这本厚厚的<Java学习笔记>,翻开目录:Java平台概论.从JDK到TDE.认识对象.封装.继承与多态...看着这些似懂非懂的术语名词,心里怀着些好奇与担忧,就这样我开 ...

  10. 搭建linux上的Eclipse+PHP编程环境

    最近打算学PHP,于是查阅资料搭建了ubuntu(14.04.3)上的PHP IDE环境 一.准备工作(可略) 主要是推荐科大的源和配置源的方法,因为后于步骤使用到了apt,科大的源非常快,并且有个针 ...