作用域和闭包

作用域和闭包

  1. 执行上下文
    console.log (a) //undefined
    var a =100 
    fn('zs')
    function fn(name){
        age =20
        console.log(name,age)//zhangsan ,20
        var age
    }
范围:一段<script>或者一段函数
全局:变量定义,函数声明
函数:变量定义、函数声明、this、arguments。

函数声明和函数表达式的区别
在js代码执行前会将所有的所有的函数声明拿出来,提前赋值undefined;

  1. this

    • 要执行时候才能确认值,定义时无法确认。

          var a = {
              name:'A'
              ,fn:function(){
                  console.log(this.name)
              }   
          }
          a.fn()  //this === a
          a.fn.call({name:'B'}) //this === {name:b}
          var fn1 = a.fn
          fn1() //this === window
    • 作为构造函数执行

    • 作为对象函数执行
    • 作为普通函数执行
    • call apply bind
  2. 作用域

    • 没有块级作用域
    • 只有函数和全局作用域
        if(true){
            var name ='zs'
        }
        console.log(name)
        // 函数和全局作用域
        var a =100
        function fn(){
            var a = 200
            console.log('fn',a)
        }
        console.log('global',a)
        fn()
  3. 作用域链
  4. 闭包
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值