es6-函数的扩展
/*
* 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-函数的扩展的更多相关文章
- ES6 函数的扩展2
8.2 rest参数 ES6引入rest参数(形式为"-变量名"),用于获取函数的多余参数,这样就不需要使用arguments对象了. arguments对象并没有数组的方法,re ...
- es6函数的扩展
扩展运算符 含义 扩展运算符(spread)是三个点(...).它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列. 扩展运算符的应用 (1)合并数组 // ES5 [1, 2].co ...
- ES6 函数的扩展1
1. 函数参数的默认值 基本用法 在ES6之前,不能直接为函数的参数指定默认值,为了避免这个问题,通常需要先判断一下参数y是否被赋值,如果没有,再等于默认值. ES6允许为函数的参数设置默认值,即直接 ...
- ES6 函数的扩展3
箭头函数 基本用法 ES6允许使用"箭头"(=>)定义函数 var f = v => v; 上面的箭头函数等同于: var f = function(v) { retu ...
- ES6 函数的扩展(1)
1. 函数参数的默认值 基本用法 在ES6之前,不能直接为函数的参数指定默认值,为了避免这个问题,通常需要先判断一下参数y是否被赋值,如果没有,再等于默认值. ES6允许为函数的参数设置默认值,即直接 ...
- ES6 函数的扩展-rest参数
ES6 引入 rest 参数(形式为...变量名),用于获取函数的多余参数,这样就不需要使用arguments对象了.rest 参数搭配的变量是一个数组,该变量将多余的参数放入数组中. functio ...
- ES6_入门(6)_函数的扩展
// 2017/7/22 /*ES6函数的扩展*/ //ES6 之前,不能直接为函数的参数指定默认值,只能采用变通的方法. function log(x, y) { y = y || 'World'; ...
- ES6 - Note3:数组、对象与函数的扩展
一.数组的扩展,ES6在数组扩展了一些API,以实现更多的功能 1.Array.from:可以将类数组和可遍历的数据结构转换成真正的数组,如下所示 var a = { '0':1,'1':1,leng ...
- ES6入门之函数的扩展
函数js原有的: 属性:arguments[].caller(调用该函数的引用,注意与callee分别开,callee指的是调用函数本身经常在递归中出现).length(形参个数).prototype ...
- ES6函数扩展
前面的话 函数是所有编程语言的重要组成部分,在ES6出现前,JS的函数语法一直没有太大的变化,从而遗留了很多问题和的做法,导致实现一些基本的功能经常要编写很多代码.ES6大力度地更新了函数特性,在ES ...
随机推荐
- bootstrap导航条相关知识
在导航条(navbar)中有一个背景色.而且导航条可以是纯链接(类似导航),也可以是表单,还有就是表单和导航一起结合等多种形式. 为导航条添加标题.二级菜单及状态 <div class=&quo ...
- sql查询层级分类
先上个效果图吧 CTE递归查询里面用了一些小的技巧,查询出结果以后在前端用表格展示出来,层级视觉效果还是很明显的 with tree as(select [ID],[Name],[Address],[ ...
- charCodeAt方法以及Unicode中文汉字编码范围
js的charCodeAt() 方法可返回指定位置的字符的 Unicode 编码.这个返回值是 0 - 65535 之间的整数. 在字符串 "Hello world!" 中,我们将 ...
- C++编译器之间的不同性能
C++编译器之间的不同性能 编译器就是将“高级语言”翻译为“机器语言(低级语言)”的程序.一个现代编译器的主要工作流程:源代码 (source code) →预处理器 (preprocessor) → ...
- 洛谷 P2596 [ZJOI2006]书架 (splay)
题目描述 小T有一个很大的书柜.这个书柜的构造有些独特,即书柜里的书是从上至下堆放成一列.她用1到n的正整数给每本书都编了号. 小T在看书的时候,每次取出一本书,看完后放回书柜然后再拿下一本.由于这些 ...
- GBK,UTF-8,和ISO8859-1之间的编码与解码
Unicode.UTF-8 和 ISO8859-1到底有什么区别 将以"中文"两个字为例,经查表可以知道其GB2312编码是"d6d0 cec4",Unicod ...
- /Date(1512551901709+0800)/转换
var convertDT=function(dt) { dt.replace(/Date\([\d+]+\)/, function (a) { eval('d = new ' + a) }); al ...
- PLSQL Developer 13.0.0.1883 注册码
PLSQL Developer 13.0.0.1883 注册码 product code: 4vkjwhfeh3ufnqnmpr9brvcuyujrx3n3le serial Number:22695 ...
- 514. Freedom Trail
In the video game Fallout 4, the quest "Road to Freedom" requires players to reach a metal ...
- xshell连接centos虚拟机的几点注意
我家用电脑使用联通的宽带,使用virtualbox装了centos6,连接方式使用NAT网络,还有一个是网络地址转换(NAT),不清楚区别是什么,使用xshell连接 当使用cd /etc/sysco ...