小蜗牛xmg

作用域和闭包

问题:

  • 对变量提升的理解
  • 说明this几种不同的使用场景
  • 创建10个<a>标签,点击的时候弹出对应的序号
  • 如何理解作用域
  • 实际开发中闭包的应用

知识点:

  • 执行上下文
  1. 范围:一段<script>或者一个函数
  2. 全局:变量定义、函数声明 一段<script>  执行前
  3. 函数:变量定义、函数声明、this、arguments   函数   执行前

            注意“函数声明” function fn(){...}[会被前置] 和“函数表达式”的区别   var fn= function {...}

  • this
  1. this要在执行时才能确认值,定义时无法确认
var a = {
      name:'A',
      fn:function(){
          console.log(this.name)
     }
}
//定义,什么时候执行,什么时候报错
a.fn()  //this===a  执行结构 A
a.fn.call({name:'B'})  //this==={name:'B'} 执行结果 B
var fn1 = a.fn
fn1()  //this===window  执行结果undefined

/*this的执行场景*/
1.作为构造函数执行
function Foo(name){//this={};this.name = name;//return this};var f = new Foo('zhangsan') 2.作为对象属性执行
var obj = {name:'A',printName:function(){console.log(this.name)}};obj.printName() 3.作为普通函数执行 window
function fn(){console.log(this)};fn() 4.call apply bind
function fn1(name,age){alert(name);console.log(this)};fn1.call({x:100},'zhangsan')
//alert zhangsan, this==={x:100}

apply 传递参数的方式不同
var fn2 = function(name,age){alert(name);console.log(this)}.bind({y:200});fn2('zhangsan',20)
//alert zhangsan,this==={y:200} 
  • 作用域
  1. JS没有块级作用域
  2. 只有函数和全局作用域
  • 作用域链

         

            函数在哪里定义,父级作用域就在哪里

  • 闭包   
function F1(){
     var a=100
     //返回一个函数(函数作为返回值)
     return function(){
         console.log(a)
     }
}
//f1得到一个函数
var f1=F1()
var a=200
f1()    //100

 闭包的使用场景

  1. 函数作为返回值(demo)
  2. 函数作为参数传递  

         定义时的父级作用域     

function F1(){
    var a=100
    return function(){
       console.log(a)
    }
}
var f1 = F1()
function F2(fn){
    var a=200
    fn()
}
F2(f1)      //100

  

问题:

  • 对变量提升的理解

          变量定义

          函数声明(注意和函数表达式的区别)

  • 说明this几种不同的使用场景

          作为构造函数执行

          作为对象属性执行

          作为普通函数执行

          call apply  bind

  • 创建10个<a>标签,点击的时候弹出对应的序号

          

          自执行函数,就是不用调用,只要定义完成,立即执行的函数

          i 在函数作用域内  

  • 如何理解作用域

           自由变量

           作用域链,即自由变量的查找

           闭包的两个场景

  • 实际开发中闭包的应用

           

            

 

posted on 2017-07-04 18:22  小蜗牛xmg  阅读(131)  评论(0)    收藏  举报

导航