1.函数可以设置参数默认值

 function test1(x,y=1){
console.log(x,y)
}
test1(10)//10 1

2.rest参数:形式为...变量名

 function test2(a,...b){
for(let i of b){
a+=i
}
console.log(a)
}
// 说明传入的参数是一个一个的传入,而不是数组形式
test2(100,1,2,3) //
test2(100,[1,2,3,4])//1001,2,3,4

注意:如果有rest参数,那么它一定是最后一个参数

 function test3(a,...b,c){}//Uncaught SyntaxError: Rest parameter must be last formal parameter

功能形如 “rest参数的逆运算”:

 function test21(a,b){
console.log(a+b)
}
// ...后面跟上数组好比是rest参数的逆运算
test21(...[1,2])//

3.箭头函数(=>)

例一:

 var test4=v => v
// 相当于
// var test4=function (v){
// return v
// }
console.log(test4(100))//

例二:

 var test5=()=>1
// 相当于
// var test5=function (){
// return 1
// }
console.log(test5())//

例三:

 var test6=(num1,num2)=>num1*num2
// 相当于
// var test6=function (num1,num2){
// return num1+num2
// }
console.log(test6(2,6))//

注意:大括号被解释成代码块,所以返回对象时要加上圆括号,否则报错

 // var test7=()=>{name:1,age:100}//报错
var test7=()=>({name:1,age:100})//正确写法
console.log(test7())//{name: 1, age: 100}
如果函数代码块内有多条语句,用上大括号
 var test8=(n1,n2)=>{return n1+n2}
console.log(test8(1,10))//
var test9=(n1,n2)=>{ let a=n1*n2+n2*n2; console.log(a)}
test9(1,10)//

重点!注意:箭头函数中this指向的是定义时所在的对象,不同于普通函数this指向的是运行时所在对象

 function Test10(){
this.name='apple',
this.num=10,
setTimeout(()=>{
//箭头函数this始终指向定义时所在对象,即Test10
console.log('arrow function',this.num+1)
},1000);
setTimeout(function(){
//普通函数在下面这种情况下,指向了全局对象window;严格模式下指向undefined
// 闭包
console.log('normal function',this.num+1)
},1000)
}
let te=new Test10()
//arrow function 11
//normal function NaN

es6(三):es6中函数的扩展(参数默认值、rest参数、箭头函数)的更多相关文章

  1. [ES6系列-03]ES6中关于参数相关特性详解(参数默认值与参数解构赋值与剩余参数)

    [原创] 码路工人 大家好,这里是码路工人有力量,我是码路工人,你们是力量. 今天总结一下 ES6 中跟参数相关的内容. 欢迎补充斧正.留言交流. 让我们互相学习一起进步. 1. ES6 参数默认值( ...

  2. C++ 函数的重载和参数默认值

    函数的重载和参数默认值视频教程 函数的重载注意事项: 只会根据三项内容进行重载:参数的个数.参数的类型.参数的顺序 参数默认值: 参数的默认值可以在函数的定义中也可以在函数的声明中,但不能同时有 从第 ...

  3. ES6 随记(3.4.1)-- 函数的拓展(参数默认值,扩展运算符)

    上一章请见: 1. ES6 随记(1)-- let 与 const 2. ES6 随记(2)-- 解构赋值 3. ES6 随记(3.1)-- 字符串的拓展 4. ES6 随记(3.2)-- 正则的拓展 ...

  4. ES6 - 函数扩展(函数参数默认值)

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

  5. ES6中函数参数默认值问题

    参数默认值 // 以前的参数默认值写法 let fn = (a, b) => { a = typeof a === "undefined" ? 10 : a b = type ...

  6. ES6学习 --函数参数默认值与解构赋值默认值

    1. ES6的解构ES6中引入了解构赋值的操作,其作用是:将值从数组Array或属性从对象Object提取到不同的变量中 即分为两种情况:从数组Array中解构,以及从对象Object中解构 ①.从数 ...

  7. ES6 学习笔记之三 函数参数默认值

    定义函数时为参数指定默认值的能力,是现代动态编程语言的标配.在ES6出现之前,JavaScript是没有这种能力的,框架为了实现参数默认值,用了很多技巧. ES6 的默认参数值功能,与其他语言的语法类 ...

  8. ES6函数参数默认值作用域的模拟原理实现与个人的一些推测

    一.函数参数默认值中模糊的独立作用域 我在ES6入门学习函数拓展这一篇博客中有记录,当函数的参数使用默认值时,参数会在初始化过程中产生一个独立的作用域,初始化完成作用域会消失:如果不使用参数默认值,不 ...

  9. ES6笔记之参数默认值(译)

    原文链接:http://dmitrysoshnikov.com/ 原文作者:Dmitry Soshnikov 译者做了少量补充.这样的的文字是译者加的,可以选择忽略. 作者微博:@Bosn 在这个简短 ...

随机推荐

  1. 【Unity Shaders】Reflecting Your World —— 在Unity3D中创建一个简单的动态Cubemap系统

    本系列主要参考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同时会加上一点个人理解或拓展. 这里是本书所有的插图.这里是本书所需的代码和资源 ...

  2. Java枚举类"全方位"

    作为一种长度固定,数据未定的一种存储数据集的数据类型,枚举类有如下方法可供参考. 普通类型的枚举类的创建 protected enum ColorEnum{ red,orange,yellow,gre ...

  3. 小老虎的微信公众号:iITObserve

    小老虎的微信公众号:iITObserve 现在,都流行玩微信. 现在,都流行玩微信公众号. 所以,博客已经Out啦! 原来是微博,现在是微信.真的,时代发展太快了. 偶赶紧也弄了一个,尝尝鲜. 偶的微 ...

  4. SpringMVC注解控制器详解

    主要包括四类:@Component.@Repository @Service.@Controller 说明: @Controller 控制层,就是我们的action层 @Service 业务逻辑层,就 ...

  5. H5学习之旅-H5的框架(13)

    H5框架语法介绍 :frame:框架对于页面的设计有很大的作用 frameSet:框架集标签定义如何将窗口分割为框架 ,每一个frameset定义一些列行或者列,rowS/COLS规定了每行或者每列占 ...

  6. 从"按层次输出二叉树"到"求解二叉树深度"的总结

    本文是在学习中的总结,欢迎转载但请注明出处:http://write.blog.csdn.net/postedit/41964669 最近在刷LeetCode上的算法题,发现好多题目的解题思路大体是一 ...

  7. mysql进阶(六)模糊查询的四种用法介绍

    mysql中模糊查询的四种用法介绍 这篇文章主要介绍了mysql中模糊查询的四种用法,需要的朋友可以参考下. 下面介绍mysql中模糊查询的四种用法: 1 %: 表示任意0个或多个字符.可匹配任意类型 ...

  8. 菜鸟玩云计算之廿一: saltstack之pillar

    菜鸟玩云计算之廿一: saltstack之pillar 参考: 点击打开链接 查看pillar数据: # salt '*' pillar.items pillar的默认根目录在:/srv/pillar ...

  9. C++中const的实现机制深入分析

    via:http://www.jb51.net/article/32336.htm C语言以及C++语言中的const究竟表示什么?其具体的实现机制又是如何实现的呢?本文将对这两个问题进行一些分析,需 ...

  10. mysql进阶(十三)命令行导出导入数据库

    MySQL命令行导出导入数据库 MySQL命令行导出数据库: 1,进入MySQL目录下的bin文件夹:cd MySQL中到bin文件夹的目录 如我输入的命令行:cd D:\Program Files\ ...