es6 function扩展

_log = console.log
//参数默认值
function log(x,y = ‘world‘){
_log(`${x} ${y}`);
}

log(‘hello‘) //hello world
log(‘hello‘, ‘china‘) //hello china

function Point(x = 0, y = 0){
this.x = x;
this.y = y;
}

_log(new Point());

function add(x = 1){
let x = 2; //报错
const x = 3; //报错
}

//与解构解析配合
function foo({x, y=5}){
_log(x,y)
}

foo({}); //undefined , 5
foo({x:1}); //1 5
foo({x:1,y:10}); // 1 10
//foo() //报错

function fetch(url , {body=‘‘,method=‘GET‘,headers={} }){
console.log(method);
}

fetch(‘http://qq.com‘,{}); //GET
//fetch(‘http://qq.com‘); //报错

function fetch(url , {body=‘‘,method=‘GET‘,headers={}} = {}){
console.log(method)
}
fetch(‘http:qq.com‘);

function m1({x=0,y=0}={}){
console.log(x,y)
}

function m2({x,y} = {x:0,y:0}){
console.log(x,y);
}
m1(); //[00]
m2(); //[0,0]
m1({}); //[0,0]
m2({}); //[undefined,undefined]

//函数参数默认值,尽量放在尾部
function foo2(x, y=2){}
console.log(foo2.length)
//函数的length属性返回没有默认值参数的和

//作用域
var x = 1
function f(y=x){
console.log(y);
}
f(2);//2

/*function f2(y=x2){
let x2 = 2;
console.log(y); //报错
}
f2();
*/
/*let foo22 = ‘outer‘;
function bar22(func = x=> foo){
let foo = ‘inner‘;
console.log(func()); //outer
}

bar22();
*/

时间: 2024-10-12 16:45:45

es6 function扩展的相关文章

ES6函数扩展

前面的话 函数是所有编程语言的重要组成部分,在ES6出现前,JS的函数语法一直没有太大的变化,从而遗留了很多问题和的做法,导致实现一些基本的功能经常要编写很多代码.ES6大力度地更新了函数特性,在ES5的基础上进行了许多改进,使用JS编程可以更少出错,同时也更加灵活.本文将详细介绍ES6函数扩展 形参默认值 Javascript函数有一个特别的地方,无论在函数定义中声明了多少形参,都可以传入任意数量的参数,也可以在定义函数时添加针对参数数量的处理逻辑,当已定义的形参无对应的传入参数时为其指定一个

ES6数组扩展

前面的话 数组是一种基础的JS对象,随着时间推进,JS中的其他部分一直在演进,而直到ES5标准才为数组对象引入一些新方法来简化使用.ES6标准继续改进数组,添加了很多新功能.本文将详细介绍ES6数组扩展 创建数组 在ES6以前,创建数组的方式主要有两种,一种是调用Array构造函数,另一种是用数组字面量语法,这两种方法均需列举数组中的元素,功能非常受限.如果想将一个类数组对象(具有数值型索引和length属性的对象)转换为数组,可选的方法也十分有限,经常需要编写额外的代码.为了进一步简化JS数组

ES6对象扩展

前面的话 随着JS应用复杂度的不断增加,开发者在程序中使用对象的数量也在持续增长,因此对象使用效率的提升就变得至关重要.ES6通过多种方式来加强对象的使用,通过简单的语法扩展,提供更多操作对象及与对象交互的方法.本章将详细介绍ES6对象扩展 对象类别 在浏览器这样的执行环境中,对象没有统一的标准,在标准中又使用不同的术语描述对象,ES6规范清晰定义了每一个类别的对象,对象的类别如下 1.普通(Ordinary)对象 具有JS对象所有的默认内部行为 2.特异(Exotic)对象 具有某些与默认行为

ES6正则表达式扩展

前面的话 正则表达式是javascript操作字符串的一个重要组成部分,但在以往的版本中并未有太多改变.然而,在ES6中,随着字符串操作的变更, ES6也对正则表达式进行了一些更新.本文将详细介绍ES6正则表达式扩展 构造函数 在 ES5 中,RegExp构造函数的参数有两种情况. 第一种情况是,参数是字符串,这时第二个参数表示正则表达式的修饰符(flag) var regex = new RegExp('xyz', 'i'); // 等价于 var regex = /xyz/i; 第二种情况是

ES6 - 数组扩展(扩展运算符)

扩展运算符 扩展运算符(spread)是三个点(...).它好比 rest 参数的逆运算(函数),将一个数组转为用逗号分隔的参数序列. rest: 变量将多余的参数放入数组中. spread(扩展):rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列. 总结:二者为逆操作. console.log(...[1, 2, 3]) // 1 2 3 该运算符主要用于函数调用. /** * 1.该运算符将一个数组,变为参数序列. */ function add(x, ...y) { // x =

Extjs系列之一 开篇+function扩展

开篇: 用Extjs开发了3年半有余,现在项目转型至偏互联网产品半年有余,将js转型至了jquery系列,想来需要博客下Extjs的一些总结和记录,同时也为了温故而知新. 主要使用的是Extjs3.4这个版本,4.0之后的版本用过些许,主要是国内的浏览器的繁杂以及xp系统的更替实在够缓慢,4.0之后在老版本浏览器上加载速度不尽如人意. 下面的介绍就都基于自己最最熟悉的3.4版本. 既然是开篇,介绍一些通用,而又被广大extjs开发者们在初期不容易发现和运用的知识,也是本人觉得一个js库比较精华的

ES6数组扩展运算符和字符串遍历的新方法!!!

该方法主要是让我们在学习和工作中能够更加方便的去操作数据,数组和字符串! 下面开始代码展示阶段: 1.扩展运算符 console.log(...[1,2,3]) //以上结果输出:1,2,3 console.log(1,...[2,3,4],5) //以上结果输出:1,2,3,4,5 可以看出我在数组的前面使用了三个点,这个方法就是ES6的扩展运算符,它能够把数组给解析出来,让数组变成数值 更方便的拿到数据! console.log([...[],1]) //以上输出:[1] 但是扩展运算符后面

深入理解javascript函数系列第四篇——ES6函数扩展

× 目录 [1]参数默认值 [2]rest参数 [3]扩展运算符[4]箭头函数 前面的话 ES6标准关于函数扩展部分,主要涉及以下四个方面:参数默认值.rest参数.扩展运算符和箭头函数 参数默认值 一般地,为参数设置默认值需进行如下设置 function log(x, y) { y = y || 'World'; console.log(x, y); } 但这样设置实际上是有问题的,如果y的值本身是假值(包括false.undefined.null.''.0.-0.NaN),则无法取得本身值

ES6简单扩展和单文件组件

es6简介 ECMAScript是JavaScript语言的国际标准,JavaScript是ECMAScript的实现 ES6新特性 多样化的声明方式 1. var 2. let 3. const 4. function 5. import 6. class Babel Babel 是一个广泛使用的 ES6 转码器,可以将 ES6 代码转为 ES5 代码,从而在现有环境执行. 这意味着,你可以用 ES6 的方式编写程序,又不用担心现有环境是否支持.下面是一个例子. // 转码前 input.ma