let关键字声明变量
let与var 都是用于声明变量但之间存在差异
let的特性:
1、let 不能重复声明 而var 可以重复声明
2、let 不会挂载在window下 var 挂载在window下 属于window下的属性
3、let是块级作用域 他不会影响到全局作用域下的变量
4、let声明的变量不能进行变量提升
const关键字声明变量
特性:
const除拥有let的特性外还有其他的特性
1、声明和赋值必须一次性完成
2、不允许改变内存空间地址
3、常量值不能被修改
字符串模板
用来定义多行字符串 用( ` ` )表示
es6中字符串的API
codepointAt() 返回一个字符的码点
// 定义一个字符串
var arr='hello world';
// 利用codePointAt()获取指定字符的码值
console.log(arr.codePointAt('h')); //104
includes() 判断匹配的字符串中是否存在指定的字符
var arr='hello world';
// 利用includes() 判断匹配的字符串中是否存在指定的字符
console.log(arr.includes('h')); //true
startsWidth() 判断是否包含参数字符串的头部
endsWidth() 判断是否包含参数字符串的尾部
var arr='hello world';
console.log(arr.startsWith('h'));
console.log(arr.endsWith('d'));
repeat() 返回一个新的字符串 将原有的字符串以指定的次数进行重复
console.log(arr.repeat(2));
Starting.raw 两种用法
1、String.raw`参数`
2、Starting.raw({raw:变量}1,2,3,4)
含义:使字符串的任何转义字符和反斜杠失效 返回模板字符串的元素字符串
padStart:返回新的字符串,表示用参数字符串从头部补全原字符串。
padEnd:返回新的字符串,表示用参数字符串从头部补全原字符串。
接受两个参数,第一个参数是生成字符串的长度,第二个是用来补全的字符串。没有指定第二个参数,默认用空格
'aa'.padStart(5,'bc') // 'bcbaa'
'aa'.endStart(5,'bc') // 'aabcb'
如果指定的长度大于或者等于原字符串的长度,则返回原字符串。
'xxx'.padStart(2, 'ab') // 'xxx'
如果原字符串加上补全字符串长度大于指定长度,则截去超出位数的补全字符串
'abc'.padStart(10, '0123456789') // '0123456abc'
replaceAll() 一次性替换所有匹配的字符串
var arr='hello world';
console.log(arr.replaceAll('ll','--')) // he--o world
字符串标记
标签模板其实不是模板,而是函数调用的一种特殊形式。“标签”指的就是函数,紧跟在后面的模板字符串就是它的参数。
但是,如果模板字符串里面有变量,就不是简单的调用了,而是会将模板字符串先处理成多个参数,再调用函数。
let a = 5;
let b = 10;
tag`Hello ${ a + b } world ${ a * b }`;
// 等同于
tag(['Hello ', ' world ', ''], 15, 50);
解构赋值
1 - 理解:从对象或数组中提取数据, 并赋值给变量(多个)
2 - 对象的解构赋值let {n, a} = {n:'tom', a:12}
3 - 数组的解构赋值let [a,b] = [1, 'atguigu'];
4 - 用途给多个形参赋值
es6中按照一定的模式从数组额对象中提取值对变量进行赋值 ,这被称为解构
数组的解构赋值
var [x,y] = [1,2];
console.log(x,y) //x:1 y:2
对象的解构赋值
var {a,b} = {a:1,b:2};
console.log(a,b) // a:1 b:2
函数的解构赋值
// 3 - 函数的解构赋值:对函数的第一个参数进行解构赋值
// 这里还是先定义一个对象:
const person = {
name: 'jack',
age: 18,
sex: '男'
};
function fn(obj) { //在这里传入一个obj对象进去
console.log(obj); //所以这里就会打印出来person {name: "jack",age:18,sex:"男"}
}
fn(person); //在这里调用了一个fn函数,传入一个person对象
// 但是我们想要打印的是里面的name,age,sex
// 所以我们就这样写:
function fn(obj) {
const { name, age, sex } = obj; //将这个对象进行解构赋值
console.log(name, age, sex); //jack 18 男
}
// 我们还可以直接写成下面这样:更简洁些:
// 就达到了我们的最终目的---对函数的第一个参数进行解构赋值
// { name, age, sex } 仅仅是一个参数,用大括号包着。
function fn({ name, age, sex }) {
console.log(name, age, sex); //jack 18 男
}
fn(person);
解构赋值允许指定默认值
var [a=true] =[]
赋值的顺序值如果有设定的值时取设定的值 没有在找自己的默认字 如果都没有着显示为undefined
扩展运算符
扩展运算符(spread)是三个点(...)。它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列。扩展运算符与正常的函数参数可以结合使用,后面也可以放置表达式,但如果后面是一个空数组,则不产生任何效果。
let arr = [];
arr.push(...[1,2,3,4,5]);
console.log(arr); //[1,2,3,4,5]
console.log(1, ...[2, 3, 4], 5) //1 2 3 4 5
console.log(...(1 > 0 ? ['a'] : [])); //a
console.log([...[], 1]); //[1]