1.let/const/var的区别
(1)let关键字
// let声明的变量仅仅在自己的块级作用域起作用
// 任何一对花括号(这玩意:{ })中的语句都属于一个块,在花括号里面用let定义的所有变量在花括号外都是不可见的,我们称之为块级作用域。
var arr = []
for(let i=0;i<10;i++){
arr[i] = function(){
// let a =9
console.log(i);
}
}
console.log(a);//报错 let块级作用域
arr[0]()//0
arr[1]()//1
arr[2]()//2
(2)const关键字
常量的特点:
// 不会变量提升
// console.log(age);
// const age = 18
// 不可修改
// age =19
// const person = {age:18}
// person.age = 19
// person.name = 'zs'
// console.log(person);
// 也可以修改对象的属性值因为并没有改变指向地址
// person = {age:99}
// 只在块级作用域起作用
// 不可重复声明同一个变量
// 声明后必须要赋值
(3)var关键字
// 用var的不足之处 打印时for循环已结束,从Windows获取值,为i=10
var arr = []
for(var i=0;i<10;i++){
arr[i] = function(){
console.log(i);
}
}
arr[0]()//10
arr[1]()//10
arr[2]()//10
(4)let和var的区别
// 1.let不会变量提升
// 2.let不能重复声明同一变量
// 3.函数内不能用let重新声明函数的参数
2.解构赋值
(1)数组的解构赋值
相当于只声明了变量c,但是没赋值
默认值3会被新的值4覆盖,c的值为4;注意:当新的值为undefined的时候,是不会覆盖默认值的。
(2)对象的解构赋值
对象的解构赋值不会受到属性的排列次序影响(数组则会受影响),它是跟属性名关联起来的,变量名要和属性名一致,才会成功赋值。
对象解构赋值也可以嵌套
(3)字符串的解构赋值
字符串被转换成了一个类似数组的对象。变量a,b,c,d,e,f都分别赋上了对应的值。
3.解构赋值的用途
(1)交换变量的值
x=2 y=1
(2)提取函数返回的多个值
相当于{name,age}={name:'张三',age:21}
4.字符串的用法
const intro2 =`大家好,我是${Person.name},我来自${Person.hometown},我今年${Person.age}岁了,我的爱好是${Person.hobby}
与字符串的拼接更为简单!!!!!
(1)repeat函数
repeat( )函数:将目标字符串重复N次,返回一个新的字符串,不影响目标字符串。
(2)includes( )函数
includes( )函数:判断字符串中是否含有指定的子字符串,返回true表示含有和false表示未含有。第二个参数选填,表示开始搜索的位置。
(3)includes函数
includes( )函数代替indexOf( )函数,因为它的返回值更直观(true或false),况且我们并不关心子字符串出现的位置
(4)startsWith函数
startsWith( )函数:判断指定的子字符串是否出现在目标字符串的开头位置,第二个参数选填,表示开始搜索的位置。
(5)endsWith函数
endsWith( )函数:判断子字符串是否出现在目标字符串的尾部位置,第二个参数选填,表示针对前N个字符。
(6)string.raw函数
返回字符串最原始的样貌,即使字符串中含有转义符,它都视而不见,直接输出
5.数组的用法
(1)Array.of函数
函数作用:将一组值,转换成数组。
(2)Array.from函数
函数作用:可以将类似数组的对象或者可遍历的对象转换成真正的数组。
(3)find函数
函数作用:找出数组中符合条件的第一个元素。
(4)findIndex函数
函数作用:返回符合条件的第一个数组成员的位置下标。
(5)fill函数
函数作用:用指定的值,填充到数组。
(6)entries函数
函数作用:对数组的键值对进行遍历,返回一个遍历器,可以用for..of对其进行遍历。
(7)keys函数
函数作用:对数组的索引键进行遍历,返回一个遍历器。
(8)values函数
作用:对数组的元素进行遍历,返回一个遍历器。