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. Flex 布局:实例篇

    上一篇文章介绍了Flex布局的语法,今天介绍常见布局的Flex写法.你会看到,不管是什么布局,Flex往往都可以几行命令搞定. ​ 我只列出代码,详细的语法解释请查阅<Flex布局教程:语法篇& ...

  2. Nginx反向代理服务器安装与配置

    一.服务器安装: sudo yum install gcc-c++ sudo yum install pcre pcre-devel sudo yum install zlib zlib-devel ...

  3. tobii SDK开发学习

    最近实验室用到tobii的眼动仪,从网上了解了下,tobii是瑞典的眼跟踪技术开发商,今年似乎有上市计划,不知道市值多少 买了仪器后试用了下,还算可以,将来配合人体设备开发,不过配套软件还需要花钱买. ...

  4. 前端 html span标签

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. ArcEngine和GDAL读写栅格数据机制对比(一)

    最近应用AE开发插值和栅格转等值线的程序,涉及到栅格读写的有关内容.联想到ArcGIS利用了GDAL的某些东西,从AE的OMD中也发现RasterDataset和RasterBand这些命名和GDAL ...

  6. sublime text2和3怎么设置修改字体

    首先,请打开你的sublime text2或3,点击工具栏中的Preferences 然后打开Settings-User 打开Settings-User之后 如下图 请复制以下代码然后粘贴至花括号内 ...

  7. Deep Learning(3)算法简介

    查看最新论文 Yoshua Bengio, Learning Deep Architectures for AI, Foundations and Trends in Machine Learning ...

  8. testng多线程并行执行测试

    testng多线程并行执行测试 testng多线程并行执行测试 并行(多线程)技术在软件术语里被定义为软件.操作系统或者程序可以并行地执行另外一段程序中多个部分或者子组件的能力.TestNG允许我们以 ...

  9. django-生成随机验证码

    Python生成随机验证码,需要使用PIL模块. 安装: pip3 install pillow 1   1 pip3 install pillow 基本使用 1.创建图片 from PIL impo ...

  10. 2016-2017 ACM-ICPC CHINA-Final Solution

    Problem A. Number Theory Problem Solved. 水. #include<bits/stdc++.h> using namespace std; ; typ ...