这是我参与更文挑战的第30天,活动详情查看: 更文挑战
ES6之let与const
let
一、块级作用域
- 块级作用域也称作词法作用域,存在于函数与块中{}
- let只在块级作用域中存在,因此当你在不同块中使用同一个名字声明变量时,是在创建一个新的变量。
二、禁止重复声明
- 同一个块级作用域中,如果已经存在某个变量,此时再用let声明会出错。
三、临时死区
- var声明的变量会应用变量提升机制:在函数作用域或全局作用域中,无论变量是在哪里声明的,都会被当成在当前作用域顶部声明的变量。所以,当你在var声明的变量之前使用此变量,会得到未初始化的undefined但是,你在let声明的作用域中,在声明之前使用let声明的变量会报错。
- let没有变量提升。
四、全局作用域绑定
- 用var声明全局变量时,这个变量会作为全局对象(浏览器环境中的window)的属性,因此可能会覆盖已经存在的全局属性。
- 而使用let声明的变量只会遮蔽已经存在的全局属性,并不会覆盖,你可以使用window.属性来使用已存在的全局属性。
const
const与let基本相同,区别有两点:
1、const声明的同时必须初始化,赋初值。
2、const不能重新赋值。
const可以用来声明对象,因为const不允许修改绑定,但允许修改值。
使用
默认使用const,当需要改变变量的值时,使用let
ES6+ 新增字符串方法
str.includes
Boolean str.includes(valueToFind[, fromIndex]) 判断字符串是否包含一个指定的值
详细: 参考数组的 includes
str.endsWith
Boolean str.endsWith(searchString[, length]) 判断当前字符串是否是以另外一个给定的子字符串“结尾”
参数
searchString
要搜索的子字符串。
可选参数
length
作为 str 的长度。默认值为 str.length
返回值
如果传入的子字符串在搜索字符串的末尾则返回true;否则将返回 false。
str.startsWith
Boolean str.startsWith(searchString[, position]) 判断当前字符串是否以另外一个给定的子字符串开头
参数
searchString
要搜索的子字符串。
可选参数
position
在 str 中搜索 searchString 的开始位置,默认值为 0,也就是真正的字符串开头处。
返回值
如果传入的子字符串在搜索字符串的开始则返回true;否则将返回 false。
str.repeat
String str.repeat(count) 构造并返回一个新字符串,该字符串包含被连接在一起的指定数量的字符串的副本
参数
count
介于0和正无穷大之间的整数。表示在新构造的字符串中重复了多少遍原字符串
返回值
生成的新字符串
模板字符串
模板字面量 是允许嵌入表达式的字符串字面量。你可以使用多行字符串和字符串插值功能。它们在ES2015规范的先前版本中被称为“模板字符串”。