es6

149 阅读4分钟

前言

众所周知JavaScript是JavaScript之父Brendan Eich为了工作需要仅仅花了几星期开发出来的,所以在一些地方有一些小缺陷,这些小缺陷在之后被无数同行吐槽,所以在后续的版本更新中,大名鼎鼎的es6诞生了。之后的版本都被统称为es6+,那就让我们看看这个名声在外的es6都有哪些东西吧。

let const var

在es6之前,都是用var声明变量,但是var有一个小小的问题:变量提升 一般我们写代码都是先声明再使用,但如果出现下面的代码阁下又该如何应对?

console.log(a);
var a=1

按常人思维这里是应该报错的,但是很可惜,这里并不会报错而是undefined,因为在js的引擎里它是这样的

var a
console.log(a);
a=1

这种情况就是变量提升。该报错的时候不报错,在一些复杂的代码里,一些小伙伴可能就会傻眼了,而在es6中就能解决这个问题,那就是let。

QQ截图20240530163537.png

而const是一个常量,进行赋值后不能进行更改

const a=1
const b=a
b=a
console.log(b);

QQ截图20240530163901.png

好!现在问题又来了,如果const声明的是一个对象那么它对象里的值可以更改吗? 答案是可以的

const obj={
    age:18
}
obj.age=19
console.log(obj);//不报错 和存储结构有关 堆栈

QQ截图20240530164157.png

这是因为对象是引用数据类型,而数字是原始数据类型,原始数据类型和引用数据类型的存储结构不同导致的。 原始数据类型是放入栈中的,而引用数据类型在栈存放的是它的地址值,属性存放在堆中。当堆中的属性发生改变,地址值不会改变。

QQ图片20240530164908.png

解构

解构是js中是一种方便的语法,它允许我们从数组或对象中提取值并赋值给变量。

如下

let arr=['a','b','c','d']
let [a,b,c,d]=arr
console.log([a,b,c,d]);

QQ截图20240530165714.png

let arr=[1,2,3,4,5]
let [a,b,...c]=arr
console.log(c);//[3,4,5]

QQ截图20240530170103.png

这种可以理解为一个萝卜一个坑,...x则视为其余的都赋给该变量

箭头函数

箭头函数是es6中引入的一种新的函数编写方法。()=>{} 这种方法和function几乎一样,唯一的区别就是this,在普通函数中,this的值是在函数被调用时确定的,它指向调用该函数的对象。而在箭头函数中,this的值是在函数定义时确定的,它指向定义箭头函数的上下文。这意味着箭头函数没有自己的this,它继承父级作用域的this。

var arr=[1,4,6,8,2,7,3]

arr.sort((a,b)=>{
    return a-b//升序    b-a降序
})

QQ截图20240530171343.png

函数

在一些函数中我们需要传入参数,但是我们不知道传多少个参数,这个时候我们可以这样

function foo(a,b,...args) {//接收剩余参数

    console.log(args);
}
foo(1,2,3,4);//[3,4]

...args可以将多余的参数以数组的形式返回

BigInt类型

bigint是一种原始数据类型,用来存储超过Number类型的数字类型范围的整数

Number范围在-(2^53-1)到(2^53-1)之间,超过这个范围number就会失真

let big = 999999999999999999999999999999999999999n  
let big1 = 1n  
console.log(big + big1);

结果为

QQ截图20240530172609.png

endsWith

这个方法用来判断字符串是否以指定字符串为结尾。返回true或者false

let str='949519059@qq.com'
console.log(str.endsWith('@qq.com'));//true
}

同理startsWith,includes用法一致

Symbol

Symbol类型是原始数据类型,创建了一个独一无二的值

QQ截图20240530173551.png 小提示:==会将等号双方进行类型转换,值相同就为true(例如'1'==1 true),===则不会,数据类型不同就为false('1'===1 false)

总结

es6中还有许多的惊喜,这里还是冰山一角,后面还会持续更新,希望对你有用,能点赞更好了。