You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
'I am a string, you are a number, so we are different, right? \
He is a boolean, he is different with us. His value is\
' + value_boolean + ', my value is ' + value_string + '.';
对于es6而言:
基本的字符串格式化,将表达式嵌入字符串中进行拼接,使用${}来界定;
ES6反问号搞定。
`'I am a string, you are a number, so we are different, right?He is a boolean, he is different with us. His value is${value_boolean }, my value is ${value_string} .`
class Student {
constructor() {
console.log("I'm a student.");
}
study() {
console.log('study!');
}
static read() {
console.log("Reading Now.");
}
}
console.log(typeof Student); // function
let stu = new Student(); // "I'm a student."
stu.study(); // "study!"
stu.read(); // "Reading Now."
类中的继承和超集:
class Phone {
constructor() {
console.log("I'm a phone.");
}
}
class MI extends Phone {
constructor() {
super();
console.log("I'm a phone designed by xiaomi");
}
}
let mi8 = new MI();
function sayName(name='Jessica') {
// 如果调用函数的时候没有传参,这个时候才会使用默认值。
console.log(`My name is ${name}`);
}
sayName(); // =>My name is Jessica
sayName('Nick'); // =>My name is Nick
The text was updated successfully, but these errors were encountered:
参考文章
1. ES6中常用的10个新特性讲解
2. ES6新增特性
1. 变量声明:const和let
es6推荐使用let作为局部变量的声明,相比之前的var(因为有变量提升,所以无论声明在何处,都会被视为声明在函数的最顶部),let和var声明的区别:
let表示声明变量,const表示声明常量(意味着它的值在设置完成之后就不能再修改了),两者都是块级作用域;如果const是一个对象,对象所包含的值是可以被修改的。也就是说,对象所指向的地址没有改变。
因此,需要我们注意:
2. 模板字符串
在es6之前我们是怎样处理模板字符串的呢?通过''和'+'来构建。
对于es6而言:
3. 箭头函数
箭头函数实际上就是函数的一种简写形式,使用括号包裹参数,再使用箭头(=>),再接上函数体。它最直观的三个特点是:
箭头函数与普通函数的区别主要是什么呢?可以参考:ES6 - 箭头函数、箭头函数与普通函数的区别
注意:
如下:
箭头函数与普通函数的区别
MDN的官方解释是:箭头函数没有自己的this,arguments,super或new.target。箭头函数表达式更适用于那些本来需要匿名函数的地方,并且它不能用作构造函数。因此它只会从自己作用域链的上一层继承this。
所以,箭头函数会捕获它在定义时(注意不是调用时)所处的外层执行环境的this,并且继承这个this,定义时确定了之后就永远不会改变了。请看下面的例子:
分析:
再来看另外一个例子:
分析:
call() apply()和bind()无法改变箭头函数的this指向
call() apply()和bind()方法可以用来动态修改函数执行时this的指向,但由于箭头函数的this定义时就已经确定且永远不会改变。所以这些方法永远改变不了箭头函数的this指向,虽然即使这样做了代码也不会报错。
箭头函数不能作为构造函数使用
首先,先看看构造函数的new都做了什么?主要有如下几个步骤:
但是,因为箭头函数没有自己的this,它的this其实继承了外层执行环境中的this,且this指向永远不会随在哪里调用、被谁调用而改变,所以箭头函数不能作为构造函数使用,否则当new调用时就会报错。
箭头函数没有自己的arguments和prototype
从上图可以看出,fun函数内部的箭头函数funIn中的arguments对象,其实是沿作用域链向上访问的外层fun函数的arguments对象。但是,我们仍然可以使用rest参数代替arguments对象,来访问箭头函数的参数列表。
4. 对象/数组的解构
ES5的写法:
ES6写法:
5. for...of和for...in
(1)遍历数组
(2)遍历对象
这个时候会抛出异常。
for...in如果应用于数组循环,返回的是数组下标、数组的属性和原型上的方法和属性,而for...in应用于对象循环返回的是对象的属性名和原型中的方法和属性。
(1)遍历对象
(2)遍历数组
总结:for...in更适合遍历对象,for...of更适合遍历数组。
7. ES6新增了class
ES6中支持class语法,不过,ES6的class不是新的对象继承模型,它只是原型链的语法糖表现形式。函数中使用static关键词定义构造函数的方法和属性。
类中的继承和超集:
分析:
8. 默认参数
ES6可以在定义函数的时候设置参数的默认值。
The text was updated successfully, but these errors were encountered: