1.let和var的区别:let声明的变量只有所在的代码块有效。
if(true){
var fruit="apple" //let fruit="apple"
}
console.log(fruit)
2.const声明一个常量(恒量)。一旦声明,常量的值就不能改变。const一旦声明变量,就必须立即初始化,不能留到以后赋值。
const arr=[];
arr.push("apple");
arr.push("banana");
arr=[]
console.log(arr);
3.解构赋值
3.1>“模式匹配”为变量赋值
function breakfast() {
return ['dessert','drink','fruit'];
}
var list=breakfast();
a=list[0],b=list[1],c=list[2];
console.log(a,b,c);
let [a,b,c]=breakfast();
console.log(a,b,c)
3.2>不完全解构,即等号左边的模式,只匹配一部分的等号右边的数组。
let [a, [b], d] = [1, [2, 3], 4];
a // 1
b // 2
d // 4
4.使用解构语法 我们可以解构对象
function breakfast() {
return {dessert:"蛋糕",drink:"饮料",fruit:"水果"}
}
let {dessert:a,drink:b,fruit:c}=breakfast();
console.log(a,b,c)
5.使用字符模板
let fruit="水果",dessert="蛋糕";
let breakfast="今天的早餐是"+fruit+"和"+dessert+"!";
console.log(breakfast)
let breakfast=`今天的早餐是${fruit}和${dessert}!`
console.log(breakfast)
//使用字符模板,很容易把一行显示成多行
let breakfast=`今天的早餐是
${fruit}和${dessert}!`;
console.log(breakfast);
6.带标签的模板字符串
let dessert="蛋糕",
drink="饮料";
let breakfast=kitchen`今天的早餐是\n${dessert}与${drink}!`
function kitchen(strings,...value) { //标签函数
//strings参数里还有raw,就是原始的没有处理过的字符
console.log(strings,value)
}
7.默认参数
function breakfast(dessert="蛋糕",drink="饮料") {
return `今天的早餐是${dessert}和${drink}!`
}
console.log(breakfast())
console.log(breakfast("包子","啤酒"))
8.判断字符串里是否包含其他字符
let dessert="蛋糕",
drink="饮料";
let breakfast= `今天的早餐是${dessert}和${drink}!`
console.log(breakfast.startsWith("今天"))
console.log(breakfast.endsWith("!"))