JS关于作用域和闭包的理解

说一下对变量提升的理解

  •   变量定义
  •   函数声明(注意和函数表达式的区别)

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

  • 作为构造函数执行
  • 作为对象属性执行
  • 作为普通函数执行
  • call apply bind

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

var i

for(i=0;i<10;i++){
    (function(i){
        var a = document.createElemnet('a')
        a.innerHTML = i + '
' a.addEventListenter('click',function(e){ e.preventDefault() alert(i) }) document.body.appendChild(a) })(i) }

如何理解作用域

  • 自由变量
  • 作用域链,即自由变量的查找
  • 闭包的两个场景(示例代码在下方)

实际开发中闭包的应用

//闭包实际应用中主要用于封装变量,收敛权限
function isFirstLoad (){
    var _list = []
    return function (id) {
           if( _list.indexOf (id)>=0){
               return false
            }else {
                _list.push(id)
                return true_
            }
        }
}

//使用
var firstLoad = isFirstLoad()
firstLoad (10)  //true
firstLoad (10)  //false
firstLoad (20)  //true

 

知识点

执行上下文

  • 范围:一段

你可能感兴趣的:(js面试题,js作用域和闭包的面试题,js作用域,this,闭包)