/*
* 1:函数参数的默认值
* */
!(() => {
function f(x, y = 1, z = 1, g = 1) {
console.log(x, y, z, g);//1,1,false,null } f(1, undefined, false, null); })(); /*
* 2与解构赋值结合使用
* */
!(() => {
function f({x = 1, y} = {}) {
console.log(x, y)
} function f1({x, y} = {x: 1}) {
console.log(x, y)
} f();//1,undefined
f({});//1,undefined
f1();//1,undefined
f1({});//undefined,undefined
})()
/*
* 3函数的length属性
* */
console.log((function (a) {
}).length);//
console.log((function (a, x = 2, e, r) {
}).length);//
console.log((function (...args) {
}).length);//
/*
* 4:函数的作用域
* ---- 一旦设置了参数的默认值,函数进行声明初始化时,参数会形成一个单独的作用域(context)。等到初始化结束,这个作用域就会消失。这种语法行为,在不设置参数默认值时,是不会出现的。
* ----暂时死区
* */ /*
*
* 5 rest参数(因为箭头函数作用域中午argument对象 用rest参数代替)
* rest 是数组argument不是
* rest 参数必须放在最后一位(不然报错)
* */
function add(a,...values) {
console.log(values);
} add(2, 5, 3) //
/*
* 6:函数的name属性
* Function构造函数返回的函数实例,name属性的值为anonymous。
* (new Function).name // "anonymous"
*ind返回的函数,name属性值会加上bound前缀。
* function foo() {};foo.bind({}).name // "bound foo"
(function(){}).bind({}).name // "bound "
* */ /*
* 7箭头函数
* (1)函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。 (2)不可以当作构造函数,也就是说,不可以使用new命令,否则会抛出一个错误。 (3)不可以使用arguments对象,该对象在函数体内不存在。如果要用,可以用 rest 参数代替。 (4)不可以使用yield命令,因此箭头函数不能用作 Generator 函数。
* */
 /*
* 箭头函数
* 1:this指向函数外部的this(函数定义时候的this指向) 对象的方法中的箭头函数this 指向对象所造作用域的this 非箭头函数时 this指向这个对象
* 2:不可当做构造函数来new 箭头函数 会报错
* 3:箭头函数没有argument 用reset参数代替 (形式为...变量名)(变量名是相当于argument)
*
*
*
* 函数中的函数 有多个调用帧 然后形成调用栈 尾调用不需要保留外层函数的调用帧
* 尾调用优化 函数内部不调用函数外部的变量
*
* */ let f=(x,y=2)=>x+1+y;
console.log(f(1));
// new f();
function f1(a,b,c) {
console.log(arguments);
console.log(arguments.constructor);
console.log(arguments.constructor.name);
return a+b+c;
}
f1(1,2,3);
((...value)=>{
console.log(value) })(1,2,3,4); const cat = {
lives: 9,
jumps: function () {
console.log(this);
this.lives--;
return this.lives;
}
}
console.log(cat.jumps());//
console.log(cat.jumps());//
console.log(cat.jumps());//

es6-函数的扩展的更多相关文章

  1. ES6 函数的扩展2

    8.2 rest参数 ES6引入rest参数(形式为"-变量名"),用于获取函数的多余参数,这样就不需要使用arguments对象了. arguments对象并没有数组的方法,re ...

  2. es6函数的扩展

    扩展运算符 含义 扩展运算符(spread)是三个点(...).它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列. 扩展运算符的应用 (1)合并数组 // ES5 [1, 2].co ...

  3. ES6 函数的扩展1

    1. 函数参数的默认值 基本用法 在ES6之前,不能直接为函数的参数指定默认值,为了避免这个问题,通常需要先判断一下参数y是否被赋值,如果没有,再等于默认值. ES6允许为函数的参数设置默认值,即直接 ...

  4. ES6 函数的扩展3

    箭头函数 基本用法 ES6允许使用"箭头"(=>)定义函数 var f = v => v; 上面的箭头函数等同于: var f = function(v) { retu ...

  5. ES6 函数的扩展(1)

    1. 函数参数的默认值 基本用法 在ES6之前,不能直接为函数的参数指定默认值,为了避免这个问题,通常需要先判断一下参数y是否被赋值,如果没有,再等于默认值. ES6允许为函数的参数设置默认值,即直接 ...

  6. ES6 函数的扩展-rest参数

    ES6 引入 rest 参数(形式为...变量名),用于获取函数的多余参数,这样就不需要使用arguments对象了.rest 参数搭配的变量是一个数组,该变量将多余的参数放入数组中. functio ...

  7. ES6_入门(6)_函数的扩展

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

  8. ES6 - Note3:数组、对象与函数的扩展

    一.数组的扩展,ES6在数组扩展了一些API,以实现更多的功能 1.Array.from:可以将类数组和可遍历的数据结构转换成真正的数组,如下所示 var a = { '0':1,'1':1,leng ...

  9. ES6入门之函数的扩展

    函数js原有的: 属性:arguments[].caller(调用该函数的引用,注意与callee分别开,callee指的是调用函数本身经常在递归中出现).length(形参个数).prototype ...

  10. ES6函数扩展

    前面的话 函数是所有编程语言的重要组成部分,在ES6出现前,JS的函数语法一直没有太大的变化,从而遗留了很多问题和的做法,导致实现一些基本的功能经常要编写很多代码.ES6大力度地更新了函数特性,在ES ...

随机推荐

  1. 【转载】Maven+druid+MyBatis+Spring+Oracle+Dubbo开发环境搭建

    原地址:http://blog.csdn.net/wp1603710463/article/details/48247817#t16 Maven+druid+MyBatis+spring+Oracle ...

  2. Hive 0.12.0安装指南

    目录 目录 1 1. 前言 1 2. 约定 1 3. 服务端口 2 4. 安装MySQL 2 4.1. 安装MySQL 2 4.2. 创建Hive元数据库 2 5. 安装步骤 3 5.1. 下载Hiv ...

  3. T4模板调用反射

    <#@ template debug="false" hostspecific="true" language="C#" #> ...

  4. apache mina2.0源码解析(一)

    apache mina是一个基于java nio的网络通信框架,为TCP UDP ARP等协议提供了一致的编程模型:其源码结构展示了优秀的设计案例,可以为我们的编程事业提供参考. 依照惯例,首先搭建a ...

  5. MySQL的下载和安装

    MySQL的下载 MySQL官网:https://www.mysql.com/ MySQL的安装 https://jingyan.baidu.com/article/6181c3e0d27a57152 ...

  6. jeecms栏目模型和内容模型的使用以及对应前台的标签中的属性名

    第一步:模型管理-添加模型: 栏目模板前缀设定方案下的channel目录下的ch_menu.html作为浏览栏目的模板页.对应访问网址:项目名/栏目名(一级或者二级栏目如news或者gnxw)/ind ...

  7. Centos配置多个tomcat服务器,并用nginx实现负载均衡

    centos配置tomcat请参见上一篇博文 :http://www.cnblogs.com/nanyangzp/p/4897655.html 一:多tomcat利用不同端口开启服务器 多个tomca ...

  8. ASP.NET MVC 全局过滤器(FilterConfig)、标记在控制器上和方法上的筛选器执行顺序

    FilterConfig->控制器上的筛选器-->方法上的筛选器(大-->小,上-->下) 全局-->控制器->个别 尝试的时候记得把返回true protecte ...

  9. 【原创】插件式ICE服务框架

    Zero ICE在跨平台.跨语言的环境中是一种非常好的RPC方案,而且使用简单.早期在使用ICE时,每一个后端功能模块都以独立服务方式部署,在功能模块较少时不会有明显的问题,但是随着功能模块的增多,部 ...

  10. what eats up the performance in the interior scene?

    - baseline (7w rps/core) - switch from large accelerator to regular accelerator (9w rps/core) - repl ...