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 ... 
随机推荐
- HUST软测1504班第2周作业成绩:WordCount
			说明 本次公布的成绩为第2周个人作业WordCount的结果: 第2周个人作业:WordCount 如果同学对作业结果存在异议,可以: 在毕博平台讨论区的第2周作业第在线答疑区发帖申诉. 或直接在博客 ... 
- PCA 学习笔记
			先简单记下,等有时间再整理 PCA 主要思想,把 协方差矩阵 对角化,协方差矩阵是实对称的.里面涉及到矩阵论的一点基础知识: 基变换: Base2 = P · Base1 相应的 坐标变换 P · c ... 
- QtCreator下QML翻译
			首先打开.pro工程文件,在文件中添加文本段:TRANSLATIONS = testTranslate_zh.ts 在pro右键,单击再次弹出命令提示,如图 在命令行中,输入lupdate testT ... 
- Ubuntu : 解决更新时出现 Unable to locate package update
			当用apt-get更新软件包时常出现错误提示Unable to locate package update, 尤其是在ubuntu server上,解决方法是: 先更新apt-get ... 
- VMware安装Ubuntu分辨率无法适应屏幕的解决方法
			 一开始虚拟机安装Ubuntu的时候遇到分辨率无法适应屏幕的时候,百度了一大堆都说使用xrandr命令来修改分辨率,但是还是无法适应1920x1080的屏幕,强迫症表示非常难受!  然后在不知道是 ... 
- C++ 调用C++写的函数库的2种方法之一(显式调用)
			一:创建C++ DLL类库,名称:Dll1 1.Dll.h _declspec(dllimport) int add(int a, int b); 2.Dll.cpp // Dll.cpp : 定义 ... 
- bootstrap css排版
			smart-form 单行元素: 一般用div包含,class="row" 列元素:用section包含,class="col col-x"(section带有 ... 
- SQL命令行修改数据库
			增加列: alter table tableName add columnName varchar(30) 修改列类型:alter table tableName alter column colum ... 
- 在Linux安装ASP.Net Core的运行时(Runtime)
			在部署的时候,如果您不想在您的Linux服务器上安装.Net Core SDK,您可以只安装Runtime,接下来我们看看该如何安装运行时Runtime. 下载运行时文件 下载页面:https://w ... 
- C#设置图片透明度
			逐个像素进行Alpha值的设置,网上其他的代码不能处理有透明背景的图片,因此要对Alpha.R.G.B均为0的透明色进行特殊处理,不做转换. private Bitmap SetImageOpacit ... 
