1、let生命的变量不存在变量提升。 2、不可以重复声明。 3、新增了一个作用域,块作用域。let声明的变量在块极作用域内。 4、会形成暂时性死区,只能在声明后试用,声明前使用的代码就是暂时性死区。
const: const关键字定义常量,const定义的变量不可以再次赋值,而且必须在声明时就赋值。const定义引用数据类型的常量,栈里存的指针地址是常量不可以修改,但是堆里对应的具体内容可以修改。
解构赋值:从数组和对象中提取每个值,对变量进行赋值。数组按照索引下标顺序赋值。 对象按key进行赋值,如果不希望用原来的key作为变量名,可以用:x起别名。
let [a,b,c] = [1,2,3]
console.log(a,b,c);
结果 1 2 3 字符串的解构:把字符串的每一个字符提取出来分别按顺序赋值。
解构赋值的应用:交换 [x,y]=[y,x]
扩展运算符... 可以将类数组转化成数组。
箭头函数 var fun =()=>{},箭头函数中的this指向的是父作用域中的this,如果父作用域的this改了,他也会一起改。 且箭头函数里不可以使用arguments获取参数,可以使用...rest获取。
扩展运算符的作用: 复制一个数组,可以实现数组的深拷贝
let array = [1,2,3]
var a1 = [...array];
作为数组的一部分:
let a2 = [...array,'a','b']
结果为[1,2,3,a,b]
数组的合并:
let a3 = [4,5,6]
let a4 = [...array,...a4]
结果为[1,2,3,4,5,6]
字符串扩展
模板字符串:字符串放在中,变量用${}括起来。
let _start = 0;
let _count = 10;
let _url = `https://douban.uieee.com/v2/movie/in_theaters?start=${_start}&count=${_count}`
console.log(_url);
includes检索字符串,有返回true,没有返回false。 indexof也是检索字符串,但是有返回数组下标,没有返回-1.
startsWith、endsWith 检索参数字符串是否在字符串开头、结尾。
padStart 、padEnd 在字符串开头/结尾补全((新的字符串长度,"要补的字符")),会返回新的字符串
repeat 重复字符串,会返回新的字符串
数值扩展
Number.is Finite判断是否是数字,返回boolean
Number.is NaN判断是否是NaN,返回boolean
Nummber.isInteger 只保留整数部分
Number.parseFloat 保留整数和小数
Math.trunc(1.2) 去掉小数部分,保留整数部分。
Math.sign()判断此数正负,正返回+1,负返回-1,0返回0.
数组: 把类数组转化成数组:Array.from 将一组值转化成数组 :Array.of(4,5,6) ->[4,5,6] filter:过滤掉所有符合条件的内容,返回的是一个数组,数组里是所有符合条件的数。
for of循环数组, keys() 数组的索引 ,values() 值, entries()[index,value]
Object.assign(obj1,obj2,。。。。)把后面的数组融合到obj1中,如果不想改变obj的值,可以[]