ECMAScript常用新特性
首先,什么是ES6呢,这里不再去复制粘贴概念,说白了ES6不是一门语言,而是脚本语言规范,而JavaScript是ES6规范的一种实现.我们可以简单想像成JDK和Java之间的关系.
1. 变量的声明 let
1)var声明的变量会越域,而let声明的变量有严格的局部作用域
{
var a = 1;
let b = 2;
}
console.log(a);
console.log(b);
2)var可以对同一个变量声明多次,而let对同给一个变量只可以声明一次
var a = 1;
var a = 2;
var a = 3;
let b = 1;
let b = 2;
console.log(a);
console.log(b);
3)var会变量提升,在var a 之前使用a,会得到undefined但是,在let b之前使用b会直接报错
2. const 声明常量(只读变量)
const a = 1;
a = 3;
console.log(a);
3. 解构表达式
个人而言,第一次接触解构表达式是在python,话说python对编程语言的影响真的好大,无论是java还是ES6标准这次的ES6很多新特性感觉都是借鉴了python,这将使得我们以后用js开发越发的便捷.
1)数组解构
普通方式:
let arr = [1,2,3];
let a = arr[0];
let b = arr[1];
let c = arr[2];
解构表达式:
let arr = [1,2,3];
let [a, b, b] = arr;
2)对象解构
普通方式:
const person = {
name: "jack",
age: 21,
language: ['java','js','css']
}
const name = person.name;
const age = person.age;
const language = person.language;
解构表达式:
let {
person.field:foo);
这里":"左边是对象中的属性,而右边是要接收属性值的变量名称.
let {
name:nm, age:a, language:lan} = person;
console.log(nm);
console.log(a);
console.log(lan);
如果要用来接收属性值的变量名称和属性名称相同,name可以简写为:
let {
name, age, language} = person;
console.log(name);
console.log(age);
console.log(language);
4. 字符串扩展
类似java语言,ES6新特性中,对字符串添加了如下的支持.
let str = "hello.vue";
console.log(str.startsWith("hello")); //true
console.log(str.endsWith(".vue")); //true
console.log(str.includes("e")); //true
console.log(str.includes("hello")); //true
5. 字符串模板
这个写法我也在python中见过,只不过python中好像是三单引号
ES6中用的是反向的点(tab键上面的那个)
let str = `
<div>
<span>hello world</span>
</div>
`
console.log(str);
真的是很方便啊,想想以前苦逼的拼接字符串是多么痛苦
6.字符串插入变量和表达式
这个最早在shell中见到过,python中也有,强!拼接字符串越来越方便了.
let name = "jack";
let age = 23;
let info = `名字:${
name}, 年龄:${
age + 1}`;
console.log(info);
还可以调用方法哦!这个就越来越像shell了
function hi() {
return "Hello World";
}
let info = `你好: