-
块级作用域
任何一对花括号({})中的语句集都属于一个块,在块中声明的变量在代码块外都是不可访问的,称之为块级作用域,ES5以前没有块级作用域
-
let
let 是ES6新增的声明变量的一种方法,与 var 最明显的区别是
-
不存在变量提升
-
产生新的作用域(块级作用域)
-
在一个作用域中 不允许重复声明
-
暂时性死区 在一个块级作用域的任何地方 声明过 就不会再访问外面的了
var c = 123;
?
if(true) {
console.log(c);
let c;
} // c is not defined 程序会报错 区别于var 它不会预解析 也不会向外找
-
-
const 关键字
const 用于声明常量(通常大家习惯将常量定义成大写),而常量一旦赋值就不允许被更改,其他属性与let一样
-
变量的解构赋值
按照某种模式,从数组和对象中提取值,对变量进行赋值这被称为解构。
-
数组的解构赋值
//1.左右对等 左侧对变量进行了声明 右侧是一个标准的数据类型(数组)
var [a, b, c] = [1, 2, 3];
?
console.log(a, b, c); // 1 2 3
?
//2. 左右两侧不对等
let [name, age] = [‘小明‘, 16, ‘男‘];
?
console.log(name, age); //小明 16
?
let [name, age, gender, home] = [‘小明‘, 16, ‘男‘];
?
console.log(name, age, gender, home); //小明 16 男 undefined
?
// 3. 允许嵌套
let [name, [age], gender] = [‘小红‘, [16], ‘女‘];
?
console.log(name, age, gender); //小红 16 女
?
// 4. rest 运算符
// ES6 新增了运算符 ...
let [a, b, c, ...d] = [1, 2, 3, 4, 5, 6, 7, 8];
?
console.log(a); //1
console.log(b); //2
console.log(c); //3
console.log(d); //[4,5,6,7,8] -
对象的解构赋值
//1.左右对等 左侧对变量进行了声明 右侧是一个标准的数据类型(对象)
let {name: name1, age: age1} = {name: ‘小明‘, age: 16};
console.log(name1);
//可以简写如下:
let {name, age} = {age: 16, name: ‘小明‘};
?
console.log(name, age);
//注意:然后根据属性名来对应 没有顺序的要求
?
// 2.左右不对等
// let {name, age} = {name: ‘小明‘, age: 16, gender: ‘男‘};
?
// let {name, age, gender, home} = {name: ‘小明‘, age: 16, gender: ‘男‘};
?
// console.log(name, age, gender, home); //home 为 undefinded
?
// 3.也是支持嵌套
let {name, child: {childname}, age} = {
name: ‘小红‘,
age: 16,
child: {
childname: ‘小小红‘
}
};
console.log(name, childname, age);
-
-
string的扩展
-
str.includes("i") //str是否包含 i 返回布尔
-
str.startsWith(‘my‘) //str 是不是以 my 开头的 布尔
-
str.endWith(‘my‘) //str 是不是以 my 结尾的 布尔
-
no.padStart(6, ‘0‘) //希望长度固定为 6 位,不够在开始位置 以 0 补充
-
no.padEnd(6, ‘0‘) //希望长度固定为 6 位,不够在结尾位置 以 0 补充
-
-
数组的扩展
-
Array.of方法创建数组
// 创建一个若干单元的数组
let users = new Array(1, 2, 3); //等价于 let users = [1, 2, 3]
?
let nums = new Array(3); // 创建一个长度为 3 的数组 存在歧义
// ES6 可以通过 Array.of 方法创建数组
?
let users = Array.of(1, 2, 3); //等价于 let users = [1, 2, 3]
?
let nums = Array.of(1); // 等价于 let users = [1] 没有歧义 统一了-
还提供了数组的检索功能 返回布尔
var courses = [‘html‘, ‘javascript‘, ‘css‘];
?
console.log(courses.includes(‘php‘)); //flase
?
console.log(courses.includes(‘html‘)); //true
?-
在数组中检索第1个满足条件的项, 条件当成回调函数的返回值
var bs = [1, 3, 4, 7, 16];
?
var res = bs.find(function (val, key, item) {
// 第1个参数为数组单元值
// console.log(val);
// 第2个为索引值
// console.log(key);
// 第3个参数为数组本身
// console.log(item);
return val > 4;
});
// console.log(res); // 根据情况 这个函数执行了4次 满足条件 结束返回 7
同样:find 换为 findIndex 用法一样 返回索引 -