3.作用域和闭包

//------------------题目------------------------->
1.说一下对变量提升的理解

针对两个场景一个script、一个是构造函数中,它的变量的声明和定义
以及函数的声明都会被提前,放在前面,所以会导致我们有变量提升主观上的理解。(执行上下文的知识)

    *1、变量定义
    *2、函数声明(注意和函数表达式的区别)

2.说明this集中不同使用场景

     *1、作为构造函数执行
     *2、作为对象属性执行
     *3、作为普通函数执行
     *4、call apply bind

3.创建10个标签,点击时候弹出来对应的序号

     var i ;
     for(i=0;i<10;i++){
         //自执行函数,就是不用调用,只要定义完成,立即执行的函数
         (function(i){
            //  函数作用域
              var a = document.createElement('a');
             a.innerHTML = i+'
'; a.addEventListener('click',function(e){ e.preventDefault(); alert(i);//自由变量,要去父级作用域获取值 }); document.body.appendChild(a); })(i); } //闭包或者作用域使用的问题
4.如何理解作用域
    *自由变量
    *作用域链,即自由变量的查找
    *闭包的两个场景
5.实际开发中闭包的应用
   //闭包是作用域知识点的实际应用
   //闭包实际应用中主要用于封装变量,收敛权限\
   // 判断用户是不是第一次加载  
   function isFirstLoad(){
       
       //把存储数据的数据源存起来,其他外边拿不到   
       var _list = [];//变量前面有下划线,说明这个是私有变量
       return function(id){
           if(_list.indexOf(id) >=0){
               return false;
           }else{
               //_list这里是自由变量,要去它定义的父作用域去找
               _list.push(id);
               return true;
           }
       }
   }
   
    //使用
    var firstLoad = isFirstLoad();
    firstLoad(10); //true
    firstLoad(10); //false
    firstLoad(20); //true
    firstLoad(20); // false
   
   
    //在isFirstLoad函数外边,根本不可能修改掉_list的值

//*******************知识点*******************************
一、执行上下文

执行上下文.png
3.作用域和闭包_第2张图片
执行机制.png

范围:一段

你可能感兴趣的:(3.作用域和闭包)