Java教程

ES6知识点详解

本文主要是介绍ES6知识点详解,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、不存在变量提升

let不像var那样会发生‘变量提升’现象,所以,变量一定要在声明之后使用,否则报错
console.log(a); //输出undefined
console.log(b); //报错ReferenceError

var a = 1;
let b = 1;

 二、会产生暂时性死区

只有块级作用域内存在let命令,它所声明的变量就‘绑定’这个区域,不再受外部的影响
var tmp =123;
if(true) {
    tmp = 'abc'; //ReferenceError
    let tmp;
}

这段代码中,存在全局变量tmp,但是块级作用域内let又声明了一个局部变量tmp,导致后者绑定这个块级作用域,所以在let声明变量之前对tmp赋值会报错

ES6明确规定,如果区块中存在let和const命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域,凡是在声明前就使用这些变量就会报错

综上可得,在代码块内,使用let命令声明变量之前,该变量都是不可用的,这在语法上,成为‘暂时性死区’

三、不允许重复声明

        1、let不允许在相同作用域内,重复声明同一个变量

四、块级作用域存在的价值

        ES5只有全局作用域和函数作用域,没有块级作用域,会出现以下问题:

        1、内层变量可能会覆盖外层变量

var tmp = new Date();

funnction f() {
    console.log(tmp);
    if(false){
        var tmp = 'Hello world';
    }
}

f(); // undefined

这段代码输出结果为undefined, 原因在于变量提升,导致内层的tmp变量覆盖了外层的tmp变量

        2、 用来计数的循环变量泄露为全局变量

五、 字符串扩展

        JavaScript只有indexOf方法

        ES6又提供了三种方法

        1. includes(); 返回布尔值,表示是否找到了参数字符串

        2. startsWith(); 返回布尔值,表示参数字符串是否在源字符串的头部

        3. endsWith(); 返回布尔值,表示参数字符串是否在源字符串的尾部

        其中这三个方法都支持第二个参数,表示开始搜索的位置

        使用第二个参数n时,endWith的行为与其他两个方法有所不同,它针对前n个字符,而其他两个方法针对从第n个位置直到字符串结束。

        4、repeat()

        repeat方法返回一个新字符串,表示将原字符串重复n次

        5、padStart(), padEnd()

        ES7推出字符串补全长度的功能,如果某个字符串不够指定长度,会在头部或者尾部补全。

        padStart用于头部补全,padEnd用于尾部补全

'ycc'.padStart(5,'LL')  //'LLycc'
'ycc'.padEnd(5,'LL')  //yccLL

其中第一个参数指定字符串的最小长度,第二个参数用来补全的字符串

1、如果原字符的长度等于或大于指定的最小长度,则返回原字符

2、如果用来补全的字符串与源字符串,两者的长度之和超过了指定的最小长度,则会截去超出位数的补全字符串。

3、如果省略第二个参数,则会用空格补全长度

六、模板字符串(反引号)

这篇关于ES6知识点详解的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!