ES5默认参数和ES6默认参数以及对象和数组结构

===========默认参数
ES5  

var a = a || 9  //当a是null 或者是 undefined a的值就为9
>>>函数中
function a(a , b ) {    >>>ES5
	var a1 = a || 0;
	var a2 = b || 1
	return a1+a2;
} 

ES6

function b( a = 0 ,b = 1) {
	return a+b;
}

>>>>默认参数进行结构  数组
function getFirst([first, ...rest] = [0, 1]) {
  return first;
}
getFirst();  // 0
getFirst([10,20,30]);  // 10
>>>>默认参数进行结构  对象
function getArr({ nums } = { nums: [1, 2, 3, 4] }){
    return nums;
}

getArr(); // [1, 2, 3, 4]
getArr({nums:[5,4,3,2,1]}); // [5,4,3,2,1]

 ====>默认参数 收集参数 展开参数
function aa([a,...b] = [6,8] ) {
	
}
对象默认参数
function getArr({ nums } = { nums: [1, 2, 3, 4] }){
   
}
getArr({nums:[5,4,3,2,1]}); // [5,4,3,2,1]

function addlis(name = 'admin', callback =  () =>{console.log(name)}){
	callback()
}
addlis()
ES5中的类和ES6中的类在语法上有一些显著的区别。以下是主要的区别: **1. 语法差异**: - ES5 类定义使用`function`关键字,然后使用`prototype`属性来继承和添加原型方法,例如: ```javascript function Person(name) { this.name = name; } Person.prototype.sayHello = function() { console.log('Hello, ' + this.name); } ``` - ES6 类则引入了`class`关键字,并直接继承自`Object`(而不是通过`prototype`),如: ```javascript class Person { constructor(name) { this.name = name; } sayHello() { console.log('Hello, ' + this.name); } } ``` **2. 构造函数自动绑定**: - ES5 中需要手动使用`call`、`apply`或`bind`来确保构造函数内的`this`指向实例,而ES6的`constructor`默认会绑定到新创建的对象。 - ES5 示例: ```javascript var person = new Person('Alice'); person.constructor.call(person); // 需要明确指定this指向 ``` - ES6 示例: ```javascript new Person('Alice'); // constructor 自动绑定到实例 ``` **3. 方法定义位置**: - ES5 中方法通常放在类体内部或`prototype`上。 - ES6 支持将方法定义在类外部并通过`static`关键字标记为静态方法,或者直接在类体内部定义。 **4. 更现代的功能**: - ES6 类还支持更高级特性,如访问修饰符(`public`, `private`, `protected`)、继承链的改变(`super`),以及类表达式等。 总的来说,ES6的类语法简洁,更接近传统面向对象语言的设计,使得代码更易读易维护。同时,它也提供了更多的特性和便利性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值