//变量提升
//let const
//块级作用域:在代码块内部声明的变量或函数,具在代码块内部课件,超出该代码则无法访问
if(true){//花括号就是块作用域
//var a=10
let a=10
console.log(a)//10
}
console.log(a)
//const let一样
//优势:使用块级作用域可以避免变量名冲突和污染全局命名空间,提高代码可读性和可维护性
/* ***************************************************************************** */
//箭头函数
//无参数的箭头函数
const fun1=()=>{
}
//一个函数
const fun2=a=>{
}
//多个函数
const fun3=(a,b)=>{
}
//箭头函数返回值
const fun4=a=>a*2
//函数内只有一条语句时,花括号可以省略,并且返回return
/* ************************************************************************************ */
//函数参数默认值
//需求:计算乘法,两数相乘,如果用户传入一个参数的话
//方法一:
/* const fun5=(a,b)=>{
if(!b){
return a*1
}
return a*b
} */
//方法二
/* const fun5=(a,b)=>{
const c=b||1
return a*c
} */
//方法三
const fun5=(a,b=1)=>{
return a*b
}
console.log(fun5(2))
//函数的拓展
//要把输出的函数求和
const fun6=(a,b,...numbers)=>{//剩余参数 用于处理可变长度的参数
return numbers.reduce((value,preResult)=>preResult+value,0)
}
console.log(fun6(1,2,3,4,5))
console.log(fun(...[1,2,3,4,5]))//将数组展开为独立元素
/* **************************************************************** */
//数组解构赋值
const numbers=[1,2,3,4,5]
/* const a=number[0]
const b=numbers[1] */
const [a,b]=numbers //a=1b=2按照顺序排
const [c,d,...rest]=numbers //rest==[3,4,5]
/* ************************************************************** */
//对象的解构赋值
const person={
name:'John',
age:30,
city:'zibo'
}
const {city,name,age}=person
console.log(name,age,city)
//指定默认值
const {gender='unknow'}=person
console.log(gender)