ES6新增

1.变量的声明

var声明

let声明

let声明的关键字与var声明的关键字基本一致

let声明的关键字是局部作用域,只在一对{}内启用

if 、switch、for都可以形成局部作用域

        var只能通过函数形成函数作用域

 let 不会变量提升,(在JavaScript引擎执行代码前。先把所有的变量和函数提升到最前面,变量同意复制为undefined)

 let不能在同一个作用域不能重复声明

const声明

和let基本一致,局部作用域,不会变量提升,同一作用域不能重复声明

声明必需赋值

声明的数据不能修改(值类型)

引用类型中,只要不是重新赋值,都是引用同一块内存地址

建议变量名大写

2.数组的解构

解构就是把数组解析为单个的变量

2.1可以用逗号跳过某个元素

2.2可以给默认值

2.3可以通过...接收剩余内容(...不定参)

2.4可以不用第三个变量来快速交换变量

3.对象解构

3.1把对象解析为单独的变量

3.2不用按顺序解构

4.ES6新增字符串方法

4.1检测

includes 是否包含,包含返回true,不包含返回false

startsWith以...开头

endsWith以...结尾

4.2填充

padStart 填充在前面,补齐3位数,不够同0来填充

padEnd 填充在后面

应用:时间不足两位数,前面补0

4.3移除空白

trim 移除两端空白 trimLeft trimRight移除左右空白

生僻字在ES6之前打印不出来占2个字节,ES6可以用for...of 打印

5.ES6数组的新增方法

5.1ES3高阶 sort排序

5.2ES5高阶 forEach filter map reduce some every

forEach有三个参数item,index,self(数组本身)

filter通常可以实现数组的去重

map映射,一一对应的方式产生一个新的数组

reduce累计,上次的结果是当次的条件

some有一返回真,则整体为真

 every 所有的回调函数返回为真,才返回真

5.5ES6

find查找第一个符合条件的元素

 findIndex查找第一个符合条件元素的下标

6.函数

6.1箭头函数

如果参数不是一个或没有参数需要添加() (a,b)=>执行语句

如果是1个参数不需要加() item=>执行语句

如果有多行语句,用{},返回语句用return

如果需要返回对象,用({})

箭头函数this指向为上一层作用域,不能作为构造函数

6.2函数默认参数

6.3函数的不定参

...+变量名,接收所有的参数列表

6.4实参扩展

实参,执行的时候

7.对象的方法

7.1对象新增

Object.creat()通过现有对剑创建一个新的对象,新对象的原型上有原对象的方法和属性,常用于继承上面

Object.keys()获取对象所有键的集合组成一个数组

Object.values()获取值得集合

Object.assigh()合并数据 合并复制对象

7.2对象简写

属性简写 当可key=value时

函数简写 可省略:function

属性名可以用字符串拼接

### ES6新增功能和特性 #### 块级作用域:`let` 和 `const` ES6 引入了两个新的声明变量的关键字——`let` 和 `const`,用于替代传统的 `var` 关键字。`let` 定义的变量具有块级作用域,而 `const` 则定义常量,其值一旦被赋予便不可更改[^1]。 ```javascript // 使用 var for (var i = 0; i < 3; i++) { setTimeout(() => console.log(i), 100); } // 输出: 3, 3, 3 // 使用 let for (let j = 0; j < 3; j++) { setTimeout(() => console.log(j), 100); } // 输出: 0, 1, 2 ``` #### Promise Promise 是一种处理异步操作的对象模型,能够更好地管理回调地狱问题。它有三种状态:待定(pending)、完成(fulfilled)和拒绝(rejected)。通过 `.then()` 方法可以链式调用多个异步操作[^2]。 ```javascript new Promise((resolve, reject) => { resolve('成功'); }).then(value => { console.log(value); // 成功 }); ``` #### 模块化 ES6 支持原生模块化开发,允许开发者通过 `import` 导入外部模块中的内容,并使用 `export` 将内部的内容暴露给其他文件[^2]。 ```javascript // math.js export function add(a, b) { return a + b; } // main.js import { add } from './math'; console.log(add(1, 2)); // 3 ``` #### 类 (`class`) ES6 中引入了类的概念,虽然本质上仍然是基于原型继承,但它提供了一种更加直观的方式来创建对象及其子类[^2]。 ```javascript class Animal { constructor(name) { this.name = name; } speak() { console.log(this.name + ' makes a noise.'); } } class Dog extends Animal { speak() { console.log(this.name + ' barks.'); } } const d = new Dog('Rex'); d.speak(); // Rex barks. ``` #### 箭头函数 箭头函数是一种更为简洁的函数表达方式,同时也解决了传统匿名函数中 `this` 绑定的问题。需要注意的是,箭头函数不绑定自己的 `this`,而是捕获外层上下文中的 `this` 值[^2]。 ```javascript function Person() { this.age = 0; setInterval(() => { this.age++; // |this| 正确指向当前实例 }, 1000); } const p = new Person(); ``` #### 解构赋值 解构赋值使得从数组或者对象中提取数据变得非常方便快捷[^2]。 ```javascript const [a, ,b] = [1, 2, 3]; console.log(a, b); // 1, 3 const {name, age} = {name: 'Alice', age: 25}; console.log(name, age); // Alice, 25 ``` #### Symbol Symbol 是一种全新的原始数据类型,在 ES6 中首次出现。每一个 Symbol 实例都应该是独一无二的,这使其非常适合于创建不会与其他属性名冲突的新属性名称。 ```javascript const sym = Symbol('description'); console.log(typeof sym); // symbol ``` #### Set 数据结构 Set 是一种集合数据结构,其中存储的所有元素均唯一无重复。可以通过一系列方法对其进行操作,比如添加、删除以及查询等[^3][^4]。 ```javascript const mySet = new Set(); mySet.add(1); mySet.add(5).add(5); console.log(mySet.size); // 2 console.log(mySet.has(5)); // true mySet.delete(5); console.log(mySet.has(5)); // false ``` #### Array.from() 该静态方法可以从类似数组或可迭代对象返回一个新的数组实例[^4]。 ```javascript const arrayLike = { length: 3 }; const newArray = Array.from(arrayLike); console.log(newArray.length); // 3 ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值