ES5/6新特性

ES5/6新特性文章目录一 ES5 1 数组尾逗号 2 严格模式 二 ES6 1 模板字符串 2 块级作用域 3 箭头函数 4 解构赋值 5 对象字面量改进 6 SpreadOperat Promise8 函数默认参数 9 模块的 Import 和 Export10 内置对象新增 API 11 新增 Map 集合 12 新增 Set 集合 13 Symbol 符号一 ES5 1 数组尾逗号 length 1 2 3 length 支持 ES5 的则 length 为 3 不支持 ES5 的 length 为 4 p

一、ES5:

1、数组尾逗号:

[,,,].length [1, 2, 3,].length //支持ES5的则length为3 //不支持ES5的length为4 { 
    prop1: value1, prop2: value2, } 

2、严格模式:

启动严格模式:

use strict; //注意:必须作为其作用范围内的第一条语句 

范围:

//为 //作用范围是整个其所在的 //为function开启严格模式 //作用范围是整个其所在的函数 

严格模式下:

  1. 变量必须先声名后赋值
  2. 不允许直接使用以0开头的八进制表示,如果要表示八进制数字,以 0o 为前缀
  3. 如果直接使用函数名调用函数,则函数体中的this为undefined。

二、ES6:

1、模板字符串

作用:拼接字符串与变量,可换行

let name = 'wuxiaodi'; let res = ` hello ${ 
      name} ! `; 

2、块级作用域

3、箭头函数

() => {}

  • 函数表达式的简写,不需要通过function关键字创建函数,并且还可以省略return关键字。
  • 箭头函数不会绑定自己的 this,箭头函数中的this会继承当前上下文的this关键字。
  • 箭头函数不能作为构造函数使用

比如:

[1, 2, 3].map(x => x + 1); // [2, 3, 4] 

等同于:

[1, 2, 3].map((function(x) { 
     return x + 1; }).bind(this)); 

4、解构赋值

// 对象 const user = { 
     name: 'guanguan', age: 2 }; const { 
     name, age } = user; console.log(`${ 
      name} : ${ 
      age}`); // guanguan : 2 // 数组 const arr = [1, 2]; const [foo, bar] = arr; console.log(foo); // 1 

我们也可以析构传入的函数参数

const add = (state, { 
     payload }) => { 
     return state.concat(payload); } 

析构时还可以配 alias,让代码更具有语义。

const add = (state, { 
     payload: todo }) => { 
     return state.concat(todo); }; 

5、对象字面量改进

这相当于解构赋值的反向操作,用于重新组织一个Object。

const name = 'wuxiaodi'; const age = 8; const user = { 
     name, age}; 

定义对象方法时,还可以省去function关键字

app.model({ 
     reducers: { 
     add() { 
    } //等同于: add: function() {} }, effects: { 
     *addRemote() { 
    } //等同于addRemote: function*(){} }, }); 

6、Spread Operator

Spread Operator 即 3 个点 …,有几种不同的使用方法。

可用于组装数组。

const todos = ['Learn dva']; [...todos, 'Learn antd']; // ['Learn dva', 'Learn antd'] 

也可用于获取数组的部分项。

const arr = ['a', 'b', 'c']; const [first, ...rest] = arr; rest; //['b', 'c'] // With ignore const [first, , ...rest] = arr; rest; // ['c'] 

还可收集函数参数为数组。

function directions(first, ...rest) { 
     console.log(rest); } directions('a', 'b', 'c'); // ['b', 'c']; 

代替apply

function foo(x, y, z){ 
    } const args = [1, 2, 3]; // 下面两句效果相同 foo.apply(null, args); foo(...args); 

对于 Object 而言,用于组合成新的 Object 。(ES2017 stage-2 proposal)

const foo = { 
     a: 1, b: 2, }; const bar = { 
     b: 3, c: 2, }; const d = 4; const ret = { 
     ...foo, ...bar, d }; // { a:1, b:3, c:2, d:4 } PS:如果有相同的key,后面的会覆盖前面的 

7、Promise

Promise 用于更优雅地处理异步请求。比如发起异步请求:

fetch('/api/todos') .then(res => res.json()) .then(data => ({ 
     data })) .catch(err => { 
    { 
     err }}); 

定义promise

const delay = (timeout) => { 
     return new Promise(resolve => { 
     setTimeout(resolve, timeout); }); }; delay(1000).then(_ => { 
     console.log('executed'); }); 

8、函数默认参数

function logActivity(activity = 'skiing') { 
     console.log(activity); } logActivity(); //skiing 

9、模块的 Import 和 Export

import用于引入模块,export用于导出模块。

比如:

// 引入部分 import dva from 'dva'; // 引入部分 import { 
     connect } from 'dva'; import { 
     Link, Route } from 'dva/router'; // 引入全部并作为 github 对象 import * as github from './services/github'; // 导出默认 export default App // 部分导出,需 import { App } from './file';引入 export class App extend Component { 
    }; 

10、内置对象新增API:

Array:

  • Array.from()
    返回数组,该方法可以将类数组对象转换为数组结构

  • Array.prototype.fill()
    数组的填充方法

  • Array.prototype.includes()
    判断数组是否包含某值

String:

  • String.prototype.startsWith()
    判断字符串是否以括号里的内容开头的,返回值是boolean值

  • String.prototype.endsWith()
    判断字符串是否以括号里的内容结尾,返回值是boolean值

11、新增Map集合:

let map = new Map(); 

API:

方法:

Map.prototype.clear() Map.prototype.delete(key) Map.prototype.entries() Map.prototype.forEach() Map.prototype.get(key) Map.prototype.has(key) Map.prototype.keys() Map.prototype.set(key, value) Map.prototype.values() 

12、新增Set集合:

let set = new Set(); let set = new Set(arrayLike) 

API:

add() delete() clear() forEach() ... 

13、Symbol符号


关于ES6新增的全部方法可看阮一峰大佬的ECMAScript 6 入门

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/198418.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午3:16
下一篇 2026年3月26日 下午3:16


相关推荐

  • 结合Bootstrap实现头像上传前预览

    结合Bootstrap实现头像上传前预览Html lt div gt lt divstyle position relative border 5pxsolidligh width 150px height 150px margin 5pxauto border radius 50 gt lt imgsrc static images default jpg alt 选择

    2026年3月18日
    2
  • idea设置编码格式

    idea设置编码格式方式一 File gt Settings gt Editor gt FileEncoding 方式二 File gt OtherSetting gt DefaultSetti gt Editor gt FileEncoding 这个和上面唯一的区别就是下面这个选择的 DefaultSetti 方式三将项目中的 idea 文件夹中的 encodings

    2026年3月16日
    2
  • c++二分法查找_二分法查找python代码

    c++二分法查找_二分法查找python代码二分法:二分法应用条件:1)数组为有序数组。2)同时题目还强调数组中无重复元素,因为一旦有重复元素,使用二分查找法返回的元素下标可能不是唯一的。区间的定义:区间的定义不同代码就不同。1)定义target在[left,right]区间while(left<=right)要使用<=,因为left==right是有意义的,所以使用<=。if(nums[middle]>target)right要赋值为middle-1,因为当前这个nums[mid

    2025年6月17日
    5
  • 使用fastjson解析json字符串

    使用fastjson解析json字符串在日常的工作中 json 是一种非常常见的数据格式 它可以被理解为键值对存储的 由于最近分析业务的时候 又处理了两种 json 字符串 今天我就将怎么处理的给大家分享一下 希望能够给学习这方面的朋友一些帮助 再给大家安利个网站 https www json cn 可以分析你得到的数据是否是 json 格式的 1 Json 套 Json 我自己造了条数据 需求是取到内部 json 中的 score 842

    2026年3月19日
    2
  • openclaw安装套路 Windows

    openclaw安装套路 Windows

    2026年3月13日
    2
  • 带你彻底理解RSA算法原理

    带你彻底理解RSA算法原理1 什么是 RSARSA 算法是现今使用最广泛的公钥密码算法 也是号称地球上最安全的加密算法 在了解 RSA 算法之前 先熟悉下几个术语根据密钥的使用方法 可以将密码分为对称密码和公钥密码对称密码 加密和解密使用同一种密钥的方式公钥密码 加密和解密使用不同的密码的方式 因此公钥密码通常也称为非对称密码

    2026年3月17日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号