ES 全称 ECMAScript,它是由欧洲计算机协会(ECMA)制定的一种脚本语言的标准化规范。
ES6是给 JavaScript 制定的一种语法规范,你写 js 的时候如果按照 ES6 中的规范去写,写的代码不仅简洁而且效率很高。
ES6 发行于 2015 年 6 月,由于这个版本的语法规范极大地提高了前端开发人员的效率,所以在前端圈子中流行开来,时至今日热度依旧不减。
let 是 ES6 中新增加的用于声明变量的关键字,它具有如下特点:
不能先使用后声明
/**
以下是错误的声明变量方法
*/
num = 20;
let num = 30;
console.log(num);
/**
正确的变量的声明方式
*/
let res = 40;
res += 10;
console.log(res);
错误的使用方式:
{
let num = 30;
}
console.log(num);
正确的使用方式
{
let res = 40;
console.log(res);
}
变量的生命周期和有效域和C、C++、java等语言类似,例如以下代码
var num = 20;
{
let num = 30;
}
console.log(num);
//最终输出为20
从上面的例子中我们可以看到,let 定义的变量只能在所在的 { }
中使用,不受外界干扰,也不会干扰外界。
const name;
console.log(name);
/*
控制台会报出以下错误
Uncaught SyntaxError: Missing initializer in const declaration
*/
/* 正确的常量声明方式*/
const name = "界染清";
console.log(name);
/*
控制台输出
界染清
*/
let name = "界染清";
{
const name = "kkk";
}
console.log(name);
/*
控制台输出:界染清
*/
从上面的例子中我们可以看到,const 和let 定义的变量一样只能在所在的 { } 中使用,不受外界干扰,也不会干扰外界。
用const修饰的对象时,可以修改对象中属性的值
( ) 代表函数
{ } 代表函数体
const ft = ()=>{} 代表把一个函数赋值给 ft
ft() 调用该函数
// 常规写法
function print() {
console.log("Hello World!");
}
// 箭头函数
const ft = ()=> console.log("Hello World!");
// 调用函数
ft();
/*
控制台输出:
Hello World!
Hello World!
*/
// 常规写法
function print(a, b) {
return a + b;
}
// 箭头函数
const ft = (a,b) => a + b;
// 调用函数
console.log(ft("Hello ","World!"));
/*
控制台输出:Hello World!
*/
// 常规写法
function print(name) {
return name + " Hello";
}
// 箭头函数
const ft = name => name + " Hello";
// 调用函数
console.log(ft("JavaScript"));
/*
JavaScript Hello
*/
// 箭头函数:获取年龄最大值
const ft = (userArray, sex) => {
let ageArray = userArray.filter(user => user.sex == sex).map(item => item.age);
return Math.max(...ageArray);
}
let userArray = [{ name: '张三', sex: '男', age: 18 },
{ name: '李四', sex: '女', age: 19 },
{ name: '王五', sex: '男', age: 21 }]
// 调用函数
console.log(ft(userArray, '男'));
/*
控制台输出 21
*/
解构就是把数据结构进行分解,然后为定义的变量赋值。
获取数组中数值的传统方式
const num =[0,1,2,3];
const a= num[0];
const b= num[1]
console.log(a + b);
解构
let [a, b] = [0, 1, 2, 3];
console.log(a + b);
获取对象中数据的传统方式
let user = {name: "张三", age: 19};
let name = user.name;
let age = user.age;
console.log("姓名:" + name + ",年龄:" + age);
解构
let { name, age } = { name: "张三", age: 19 };
console.log("姓名:" + name + ",年龄:" + age);
const print = (num, ...args) => {
console.log(num);
console.log(args);
}
print(0, 1, 2)
/*
控制台输出:
0
[1,2]
*/
let u1 = ['张三', '李四', '王五'];
let u2 = ['张无忌', '赵敏', '周芷若'];
let u3 = [...u1,...u2];
console.log(u3);
/*
控制台输出:
['张三','李四','王五','张无忌','赵敏','周芷若']
*/
let users = ['张三', '李四', '王五'];
let [u1, ...u2] = users;
console.log(u1);
console.log(u2);
/*
张三
['张三','李四']
*/
可选链是一种 访问嵌套对象属性的防错误方法 。即使中间的属性不存在,也不会出现错误。 如果可选链 ?. 前面部分是 undefined 或者 null,它会停止运算并返回 undefined。
我们要想获取一个嵌套对象的属性,一般会这样写:
let res = {
data: {
data: {
success: true,
id: "102154"
}
}
}
if (res && res.data && res.data.data.success) {
let id = res.data.data.id;
console.log(id);
}
使用可选链
let res = {
data: {
data: {
success: true,
id: "102154"
}
}
}
if (res?.data?.data?.success) {
let id = res?.data?.data?.id;
console.log(id);
}