块级作用域
'use strict';
if(true){
var fruit = "apple";
}
console.log(fruit);//apple
//块级作用域
if(true){
let fruit = "apple";
}
console.log(fruit); //ReferenceError: fruit is not defined
使用let定义的变量只能作用在定义它的块里面
使用constant声明一个恒量
const fruit = "apple";
console.log(fruit);
const fruit = "huahua";
console.log(fruit);//Identifier 'fruit' has already been declared
'use strict';
const fruit = [];
fruit.push("apple");
console.log(fruit);//[ 'apple' ]
解构数组
'use strict';
function breakfast() {
return ["cake","milk","apple"];
}
//之前的做法
var tmp = breakfast(),
dessert = tmp[0], drink = tmp[1], fruit = tmp[2];
console.log(dessert, drink, fruit);
//解构数组
let [dessert, drink, fruit] = breakfast();
console.log(dessert, drink, fruit);//cake milk apple
解构对象
function breakfast() {
return {dessert:"cake",drink:"milk",fruit:"apple"};
}
let {dessert: dessert, drink: drink, fruit: fruit} = breakfast();
console.log(dessert, drink, fruit);
模版字符串-Template
'use strict';
let dessert = "cake",
drink = 'tea';
let breakfast = "今天的早餐是" + dessert + "和" +drink;
console.log(breakfast);
let dessert = "cake",
drink = 'tea';
let breakfast = `今天的早餐是${dessert}和${drink}`;
console.log(breakfast);//今天的早餐是cake和tea
//字符串模板也可以轻松的实现换行
let dessert = "cake",
drink = 'tea';
let breakfast = `今天的早餐是
${dessert}和${drink}`;
console.log(breakfast);
//今天的早餐是
cake和tea
带标签的模版字符串-Tagged Templates
let dessert = "cake",
drink = 'tea';
let breakfast = kitchen`今天的早餐是
${dessert}和${drink} !`;
function kitchen(strings,...values) {
console.log(strings);//[ '今天的早餐是', '和', ' !' ]
console.log(values);//[ 'cake', 'tea' ]
}
//也可以使用循环将字符串拼接起来
'use strict';
let dessert = "cake",
drink = 'tea';
let breakfast = kitchen`今天的早餐是
${dessert}和${drink} !`;
function kitchen(strings,...values) {
let result ='';
for(var i = 0;i<values.length;i++){
result += strings[i];
result += values[i];
}
result += strings[strings.length -1];
return result;
}
console.log(breakfast);
判断字符串里面是否包含其他字符串
'use strict';
let dessert = "cake",
drink = 'tea';
let breakfast = `今天的早餐是
${dessert}和${drink} !`;
console.log(breakfast.startsWith('今天')) ;//true
console.log(breakfast.startsWith('!')) ;//false
console.log(breakfast.endsWith('!')) ;//true
console.log(breakfast.includes("cake"));//true
console.log(breakfast.includes("apple"));//false
给函数接收的参数设置默认的值(Default Parameter Values)
function breakfast(dessert="cake",drink="tea") {
return `${dessert} ${drink}`;
}
console.log(
breakfast()//cake tea
);
console.log(
breakfast("cookie","milk")//cookie milk
);
展开操作符-Spread
let fruits = ["apple","banana"];
console.log(fruits); //[ 'apple', 'banana' ]
console.log(...fruits); //apple banana
let fruits = ["apple","banana"],
food = ["cake",...fruits];
console.log(food);//[ 'cake', 'apple', 'banana' ]
剩余操作符Rest
function breakfast(dessert,drink,...foods) {
console.log(dessert,drink,foods);
}
breakfast("cake","milk","apple","tea");//cake milk [ 'apple', 'tea' ]
function breakfast(dessert,drink,...foods) {
console.log(dessert,drink,...foods);
}
breakfast("cake","milk","apple","tea");//cake milk apple tea