作用域、匿名函数

1.作用域

js变量作用域: 变量可以使用的范围

js三种作用域:
(1) 全局作用域 : 页面任何地方都可以使用
全局变量 : 在大括号外面声明的变量
(2) 局部作用域 : 只能在函数大括号里面使用
(3) 块级作用域 : 只能在大括号(if和for)里面使用

//全局作用域 : 全局变量
let num = 10
//局部作用域 : 函数里面声明的变量
function fn(a){//形参也是局部
//局部变量
     let age = 20
     console.log(age)    
}
fn(10)

//块级作用域: 在大括号里面声明的变量(分支+循环)
for(let i = 1;i<=10;i++){
    //块级变量
   console.log( i)
}

2.作用域链

js作用域链 : 默认情况下,js代码处于全局作用域(顶级/0级),当声明函数之后就会开辟一个局部作用域(1级), 而函数内部又可以声明一个函数(2级),以此类推就会形成作用域链。

js访问作用域链规则 : 就近原则
当你访问变量的时候,会先在当前作用域寻找声明。 有则使用当前作用域。 没有就找上级有没有声明,有则使用,无则继续往上找。一直找到最顶级0级,还没有就会报错:xxx is not defined

//0级
let num = 10
console.log(num) //10
function fn() {
//1级
  let num = 20
  console.log(num) //20
      function fn1() {
        //2级
        let num = 30
        console.log(num) //30
      }
      fn1()
}
fn()

3.匿名函数

3.1匿名函数 : 没有函数名的函数
3.2匿名函数作用 : 开辟独立作用域,解决全局变量污染
变量污染 : 全局变量名过多之后,就会导致重名风险。

具名函数(有名字的函数) : function 函数名(){}
具名函数调用语法: 函数名()

function fn(){
    console.log(1111)
}
fn()

匿名函数(没有名字的函数) : function(){}
匿名函数由于没有函数名,所以不能直接调用。调用匿名函数,只有两种方式
(1)函数自调用 : (匿名函数)()
细节: 自调用语法前面不能省略分号
(2) let 函数名 = 匿名函数

;(function(){
       let num = 10
       console.log(num)
})()

let fn1 = function(){
       console.log(666)
}
fn1()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值