iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > html >ES6新增的特性有哪些及怎么用
  • 196
分享到

ES6新增的特性有哪些及怎么用

2024-04-02 19:04:59 196人浏览 薄情痞子
摘要

这篇文章主要讲解了“es6新增的特性有哪些及怎么用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“ES6新增的特性有哪些及怎么用”吧!理解ES6ECMAScr

这篇文章主要讲解了“es6新增的特性有哪些及怎么用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“ES6新增的特性有哪些及怎么用”吧!

ES6新增的特性有哪些及怎么用

理解ES6

ECMAScript ,是由网景公司制定的一种脚本语言的标准化规范;最初命名为 Mocha ,后来改名为 LiveScript ,最后重命名为 javascript
ECMAScript 2015(ES2015),第 6 版,最早被称作 ECMAScript 6(ES6),添加了新的特性。

ES6 块级作用域 let

首先,什么是作用域?作用域简单讲就是声明一个变量,这个变量的有效范围,在 let 没来之前。js 只有 var全局作用域函数作用域ES6 为 js 带来了块级作用域。【相关推荐:javascript学习教程

ES6新增的特性有哪些及怎么用

{
    var a = "?";
    let b = "⛳";
}
console.log(a);
console.log(b);
?
Uncaught ReferenceError: b is not defined

可以看到,我们使用 var 关键字在块中定义了变量 a,其实全局可以访问到,所以说,var声明的变量是全局的,但我们想让变量就在块中生效,出了块就访问不了了,这时就可以使用 ES6 新增的块级作用域关键字 let 来声明这个变量 a,当我再次访问,报错了,说 a is not defined ,a 没有定义

ES6 解构数组

如下所示,首先定义了一个函数,返回一个数组,在未使用解构数组前,调用数组并把返回值赋值给 temp ,然后打印 temp 数组,使用了解构数组后,直接定义一个数组变量,然后将函数返回值指向该变量,他会自动把第一项的值赋值给第一个数组变量,第二项赋值给第二个数组变量,以此类推,最后打印三个变量,看到没有问题

function breakfast() {
    return ['?', '?', '?'];
}
var temp = breakfast();
console.log(temp[0], temp[1], temp[2]);

let [a, b, c] = breakfast();
console.log(a, b, c);
? ? ?
? ? ?

ES6 解构对象

首先 breakfast 函数返回一个对象,使用解构对象,定义对象,键值对中键表示映射的实际对象的键名,值就是自定义变量,解构完成,会自动完成赋值,然后调用 breakfast 函数,返回对象,随后打印变量 a,b,c ,可以看到没问题

function breakfast() {
    return { a: '?', b: '?', c: '?' }
}
let { a: a, b: b, c: c } = breakfast();
console.log(a, b, c);
? ? ?

ES6 模板字符串

在使用模板字符串前,我们拼接字符串变量使用 +

使用 ES6 提供的模板字符串,首先使用 `` 把字符串包起来,当要使用变量时 ,使用 ${变量}

let a = '?',
    b = '?️';

let c = '今天吃' + a + '吃完看' + b;
console.log(c);

let d = `今天吃 ${a} 吃完看 ${b}`;
console.log(d);
今天吃?吃完看?️
今天吃 ? 吃完看 ?️

ES6 判断字符串里是否包含其他字符串

使用这些函数,可以轻松的完成是不是以什么开头的字符串,是不是以什么结尾的字符串,是不是包含了什么字符串等的操作

let str = '你好,我是小周 ❤️';
console.log(str.startsWith('你好'));
console.log(str.endsWith('❤️'));
console.log(str.endsWith('你好'));
console.log(str.includes(" "));
true
true
false
true

ES6 默认参数

ES6里,可以使用默认参数,当调用函数时,没有给参数进行赋值时,就使用设置的默认参数执行,当给参数赋值时,就会使用新赋的值执行,覆盖默认值,使用如下:

function say(str) {
    console.log(str);
}
function say1(str = '嘿嘿') {
    console.log(str);
}
say();
say1();
say1('❤️');
undefined
嘿嘿
❤️

ES6 展开操作符

使用 ... 可以展开元素,方便操作,使用如下:

let arr = ['❤️', '?', '?'];
console.log(arr);
console.log(...arr);
let brr = ['王子', ...arr];
console.log(brr);
console.log(...brr);
[ '❤️', '?', '?' ]
❤️ ? ?
[ '王子', '❤️', '?', '?' ]
王子 ❤️ ? ?

ES6 剩余操作符

... 操作符用在函数参数上,接收一个参数数组,使用如下:

function f1(a, b, ...c) {
    console.log(a, b, c);
    console.log(a, b, ...c);
}
f1('?','?','☃️','㊙️');
? ? [ '☃️', '㊙️' ]
? ? ☃️ ㊙️

ES6 函数名字

使用 .name 可以获取函数的名字,具体使用如下:

function f1() { }
console.log(f1.name);
let f2 = function () { };
console.log(f2.name);
let f3 = function f4() { };
console.log(f3.name);
f1
f2
f4

ES6 箭头函数

使用箭头函数可以让代码更简洁,但是也要注意箭头函数的局限性,以及箭头函数中自身没有 this,this指向父级

let f1 = a => a;

let f2 = (a, b) => {
    return a + b;
}

console.log(f1(10));
console.log(f2(10, 10));
10
20

ES6 对象表达式

使用es6的对象表达式,如果对象属性和值一样,可以省略值,函数写法可以省去function,用法如下:

let a = '㊙️';
let b = '☃️';

const obj = {
    a: a,
    b: b,
    say: function () {

    }
}

const es6obj = {
    a,
    b,
    say() {

    }
}

console.log(obj);
console.log(es6obj);
{ a: '㊙️', b: '☃️', say: [Function: say] }
{ a: '㊙️', b: '☃️', say: [Function: say] }

ES6 恒量

使用 const 关键字定义衡量,const 限制的是给衡量分配值的动作,并不限制衡量中的值,使用如下:

const app = ['☃️', '?'];
console.log(...app);
app.push('?');
console.log(...app);
app = 10;

可以看到当再次给衡量分配值就报错了

☃️ ?
☃️ ? ?
app = 10;
    ^
TypeError: Assignment to constant variable.

ES6 对象属性名

使用点定义对象属性时,如果属性名中含有空格字符,是不合法的,语法通不过的,使用 [属性名] 可以完美解决,并且不仅可以直接写明属性名,还可以使用变量来指定,具体使用如下:

let obj = {};
let a = 'little name';
obj.name = '王子';
// 使用点定义属性中间有空格是不合法的
// obj.little name = '小王子';
obj[a] = '小王子';
console.log(obj);
{ name: '王子', 'little name': '小王子' }

ES6 判断两个值是否相等

一些特殊值使用 ===== 进行比较的结果,可能不满足你的需求,这是你可以使用Object.is(第一个值,第二个值) 来进行判断,可能你就开心的笑了

console.log(NaN == NaN);
console.log(+0 == -0);
console.log(Object.is(NaN, NaN));
console.log(Object.is(+0, -0));
false
true
true
false

ES6 复制对象

使用 Object.assign() 可以把一个对象复制到另一个对象,使用如下:

let obj = {};
Object.assign(
    // 源
    obj,
    // 复制目标对象
    { a: '☃️' }
);
console.log(obj);
{ a: '☃️' }

ES6 设置对象的 prototype

使用es6可以设置对象的 prototype,使用如下:

let obj1 = {
    get() {
        return 1;
    }
}
let obj2 = {
    a: 10,
    get() {
        return 2;
    }
}
let test = Object.create(obj1);
console.log(test.get());
console.log(Object.getPrototypeOf(test) === obj1);
Object.setPrototypeOf(test, obj2);
console.log(test.get());
console.log(Object.getPrototypeOf(test) === obj2);
1
true
2
true

ES6 proto

let obj1 = {
    get() {
        return 1;
    }
}
let obj2 = {
    a: 10,
    get() {
        return 2;
    }
}
let test = {
    __proto__: obj1
}
console.log(test.get());
console.log(Object.getPrototypeOf(test) === obj1);
test.__proto__ = obj2;
console.log(test.get());
console.log(Object.getPrototypeOf(test) === obj2);
1
true
2
true

ES6 super

let obj1 = {
    get() {
        return 1;
    }
}
let test = {
    __proto__: obj1,
    get() {
        return super.get() + ' ☃️';
    }
}
console.log(test.get());
1 ☃️

ES6 生成迭代器

在学习前,先首写一个迭代器

function die(arr) {
    let i = 0;

    return {
        next() {
            let done = (i >= arr.length);
            let value = !done ? arr[i++] : undefined;

            return {
                value: value,
                done: done
            }
        }
    }
}
let arr = ['☃️', '?', '?'];

let dieArr = die(arr);
console.log(dieArr.next());
console.log(dieArr.next());
console.log(dieArr.next());
console.log(dieArr.next());
{ value: '☃️', done: false }
{ value: '?', done: false }
{ value: '?', done: false }
{ value: undefined, done: true }

OK,看看简化的生成器

function* die(arr) {
    for (let i = 0; i < arr.length; i++) {
        yield arr[i];
    }
}
let test = die(['?','☃️']);
console.log(test.next());
console.log(test.next());
console.log(test.next());
{ value: '?', done: false }
{ value: '☃️', done: false }
{ value: undefined, done: true }

ES6 类

使用es6可以快速方便的构建类,好耶

class stu {
    constructor(name) {
        this.name = name;
    }
    say() {
        return this.name + '说奥里给';
    }
}
let xiaoming = new stu("小明");
console.log(xiaoming.say());
小明说奥里给

ES6 get set

定义get/set方法,用于获取或者修改类的属性

class stu {
    constructor(name) {
        this.name = name;
    }
    get() {
        return this.name;
    }
    set(newStr) {
        this.name = newStr;
    }
}
let xiaoming = new stu("小明");
console.log(xiaoming.get());
xiaoming.set("大明")
console.log(xiaoming.get());
小明
大明

ES6 static

使用static关键字修饰的方法,不用实例化对象也可以直接使用

class stu {
    static say(str) {
        console.log(str);
    }
}
stu.say("奥里给 静态方法");
奥里给 静态方法

ES6 extends

使用继承,可以减少代码冗余,比如:

class Person {
    constructor(name, bir) {
        this.name = name;
        this.bir = bir;
    }
    showInfo() {
        return '姓名:' + this.name + '生日:' + this.bir;
    }
}
class A extends Person {
    constructor(name, bir) {
        super(name, bir);
    }
}
let zhouql = new A("周棋洛", "2002-06-01");
// 周棋洛本身是没有showInfo方法的,是继承自Person的
console.log(zhouql.showInfo());
姓名:周棋洛生日:2002-06-01

ES6 Set

Set 集合,与数组不同,Set 集合中不允许有重复元素

// 创建Set集合
let food = new Set('??');
// 重复添加,只有一个能进去
food.add('?');
food.add('?');

console.log(food);
// 当前集合大小
console.log(food.size);
// 判断集合中是否存在某一元素
console.log(food.has('?'));
// 删除集合中某一元素
food.delete('?');
console.log(food);
// 循环遍历集合
food.forEach(f => {
    console.log(f);
});
// 清空集合
food.clear();
console.log(food);
Set(3) { '?', '?', '?' }
3
true
Set(2) { '?', '?' }
?
?
Set(0) {}

ES6 Map

Map结合存储键值对

let food = new Map();
let a = {}, b = function () { }, c = "name";

food.set(a, '?');
food.set(b, '?');
food.set(b, '?');
food.set(c, '米饭');

console.log(food);
console.log(food.size);
console.log(food.get(a));
food.delete(c);
console.log(food);
console.log(food.has(a));

food.forEach((v, k) => {
    console.log(`${k} + ${v}`);
});
food.clear();
console.log(food);
Map(3) { {} => '?', [Function: b] => '?', 'name' => '米饭' }
3
?
Map(2) { {} => '?', [Function: b] => '?' }
true
[object Object] + ?
function () { } + ?
Map(0) {}

ES6 模块化

使用模块化开发,es6可以方便的导入和导出一些内容,还有默认导出等等细节

let a = '?';
let f1 = function (str = '你丫的写参数') {
    console.log(str);
}
export { a, f1 };
import {a, f1} from './27模块测试.js';
console.log(a);
f1();
f1('知道了');

感谢各位的阅读,以上就是“ES6新增的特性有哪些及怎么用”的内容了,经过本文的学习后,相信大家对ES6新增的特性有哪些及怎么用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: ES6新增的特性有哪些及怎么用

本文链接: https://www.lsjlt.com/news/98614.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • ES6新增的特性有哪些及怎么用
    这篇文章主要讲解了“ES6新增的特性有哪些及怎么用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“ES6新增的特性有哪些及怎么用”吧!理解ES6ECMAScr...
    99+
    2024-04-02
  • es6的新增特性有哪些
    这篇文章主要介绍“es6的新增特性有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“es6的新增特性有哪些”文章能帮助大家解决问题。 ...
    99+
    2024-04-02
  • es6的新特性有哪些及怎么使用
    这篇文章主要介绍“es6的新特性有哪些及怎么使用”,在日常操作中,相信很多人在es6的新特性有哪些及怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”es6的新特性有哪些及怎么使用”的疑惑有所帮助!接下来...
    99+
    2023-06-26
  • es6的新特性有哪些
    es6的新特性有:1、块级作用域,可以在块级作用域中声明变量;2、箭头函数,一种新的函数声明方式;3、解构赋值,一种从数组或对象中提取值并赋值给变量的语;4、默认参数,允许在函数定义时为参数提供默认值;5、扩展运算符,可以将数组或对象展开,...
    99+
    2023-08-04
  • Vue3 style中新增的特性有哪些及怎么用
    三、插槽选择器默认情况下,作用域样式不会影响到 <slot/> 渲染出来的内容,因为它们被认为是父组件所持有并传递进来的。使用 :slotted 伪类以确切地将插槽内容作为选择器的目标:<style scoped> ...
    99+
    2023-05-14
    Vue3 style
  • es6新特性都有哪些
    本教程操作环境:Windows10系统、ECMAScript 6版、Dell G3电脑。es6新特性都有哪些?ES6新特性1、let和const前面讲过:https://www.php.cn/js-tutorial-499866.html2...
    99+
    2023-05-14
    ES6
  • ES11新增的新特性有哪些
    本篇内容介绍了“ES11新增的新特性有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!ECMAScrip...
    99+
    2024-04-02
  • PHP7.4的新增特性有哪些
    这篇文章将为大家详细讲解有关PHP7.4的新增特性有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。PHPPHP 7里程版本PHP 7.4于2019年11月28日正式发布。因此,现在该让我们深入研究一些...
    99+
    2023-06-14
  • PHP的新增特性有哪些?
    php 的新特性包括:标量类型声明(提升代码可读性和维护性)、匿名类(方便创建一次性对象)、返回类型声明(静态分析和提高维护性)、空间船操作符(比较表达式值)、null 合并运算符(提供...
    99+
    2024-04-13
    php 新特性 代码可读性
  • MySQL6.0新增特性有哪些
    小编给大家分享一下MySQL6.0新增特性有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!* 对子查询和Join进行了优化,...
    99+
    2024-04-02
  • MySQL 8.0新增特性有哪些
    这篇文章主要讲解了“MySQL 8.0新增特性有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL 8.0新增特性有哪些”吧! ...
    99+
    2024-04-02
  • PHP 7.4有哪些新增特性
    本篇文章为大家展示了PHP 7.4有哪些新增特性,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。性能提升,数组表达式中引入 Spread 运算符…自 PHP 5.6 起可用,参数解包是将数组和 Tra...
    99+
    2023-06-15
  • ES6新特性常用的知识点有哪些
    这篇文章主要介绍了ES6新特性常用的知识点有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1.关键字Let 关键字 在let所在的代码块中起作用。在let之前对于改该变量...
    99+
    2023-06-25
  • 有哪些实用的ES6特性
    这篇文章主要介绍“有哪些实用的ES6特性”,在日常操作中,相信很多人在有哪些实用的ES6特性问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”有哪些实用的ES6特性”的疑惑有所帮...
    99+
    2024-04-02
  • es6新加的特性是什么及怎么用
    这篇文章主要介绍“es6新加的特性是什么及怎么用”,在日常操作中,相信很多人在es6新加的特性是什么及怎么用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”es6新加的特性是什...
    99+
    2024-04-02
  • Kubernetes1.5新增哪些特性
    这篇文章主要介绍“Kubernetes1.5新增哪些特性”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Kubernetes1.5新增哪些特性”文章能帮助大家解决问题。Kubernetes1.5正式发...
    99+
    2023-06-28
  • es6新增的扩展有哪些
    这篇“es6新增的扩展有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“es6新增的扩展...
    99+
    2024-04-02
  • css3有哪些新增的背景属性及怎么用
    这篇“css3有哪些新增的背景属性及怎么用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“c...
    99+
    2024-04-02
  • ES6中有哪些特性
    这篇文章给大家分享的是有关ES6中有哪些特性的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1.Object Shorthand新的对象声明方法允许我们可以不声明对象的 key :...
    99+
    2024-04-02
  • ES6~ES12的特性有哪些
    这篇文章主要讲解了“ES6~ES12的特性有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“ES6~ES12的特性有哪些”吧!ECMAScriptECMA...
    99+
    2024-04-02
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作