let和const的区别?
共同点:都是块级作用域
不同点:let声明的是变量,const声明的是一个常量,不能修改
let a=10;a=20;
console.log(a) //20 可以修改
const obj = {
name:"张三",
age:1
}
obj={name:"二虎"} ; // 对象不能修改
obj.name="李四" ; // 对象的属性值可以修改
console.log(obj.name) // 李四
箭头函数和普通函数的区别?
this指向不同
普通函数,谁调用这个函数,this就指向谁,箭头函数,在哪里定义函数,this就指向谁
const fun = () =>{
return 100
}
const fun = () => 100
console.log(fun()) ;
()中定义参数,如果只有一个参数,可以不写括号
{} 中写函数体,如果函数体中只有返回值,可以不写return
let obj = {
name:"小明",
age:2,
sayName(){
// 普通函数
setTimeout(function(){
let self = this ;
console.log('我是'+self .name)
},500)
// 箭头函数
setTimeout(()=>{
console.log('我是'+this.name)
},500)
}
}
obj.sayName()
闭包的理解?
// 闭包: 函数嵌套函数,内部函数就叫做闭包
function outer(){
let a=10;
function fun(){
console.log(a) //10
}
return fun
}
let fun = outer()
fun()
正常情况下,函数执行完成,内部变量会销毁
(销毁:释放内存空间)
特性:闭包,内部函数没有执行完成,外部函数变量不会被销毁
举个例子:
function sun(){
let a = 10;
console.log(a) //10 可以找到a
}
console.log(a)//找不到a,因为函数执行完内部变量会销毁,外部访问不到
sun()
闭包应用:
let a = 10,b = 20;
function add(){
return a+b
}
function sub(){
return a-b
}
let result1 = add()
let result2 = sub()
console.log(result)
// 这里把两个函数封装在一个立即执行函数里面,直接用函数调用不需要一个一个调用
let modo = (function(){
let a = 10,b = 20;
function add(){
return a+b
}
function sub(){
return a-b
}
return {
add,
sub
}
})()
let result1 = modo.add() ;
let result2 = modo.sub() ;
console.log(result1,result2)
// 写完,貌似看起来似乎有繁琐了点有没有
今日分享到此结束!...