前端JavaScript基础面试题01_JS基础知识(中)作用域、闭包
2021-04-14 21:25
                         标签:构造器   存在   listen   efi   tee   load   img   type   图片    JS的变量提升主要从两方面来说,变量定义、函数声明,二者都是把对应的内容放到对应定义时的执行环境的顶部,然后JS再开始往下依次解释(注意:函数声明的提升权重大于变量提升) 前端JavaScript基础面试题01_JS基础知识(中)作用域、闭包 标签:构造器   存在   listen   efi   tee   load   img   type   图片    原文地址:https://www.cnblogs.com/cqkjxxxx/p/13336464.html说一下对变量提升的理解
// 函数b和函数c的声明被放到了顶部
// var a
// var c
console.log(a) // undefined
console.log(c) // 此时输出的是函数c
var a = 100
var c = 100
b() // 我是b函数
function b() {
  console.log(‘我是b函数‘)
}
function c() {
  console.log(‘我是c函数‘)
}

说明 this 几种不同的使用场景
创建10个  标签,点击的时候弹出对应的序号、
var i, a
for (i = 0; i ‘
    a.addEventListener(‘click‘, function (e) {
      e.preventDefault()
      alert(i) // 自由变量,要去父作用域获取值
    })
    document.body.appendChild(a)
  })(i)
}
如何理解作用域?
实际开发中闭包的应用
// 封装私有变量
function isFirstLoad() {
  var _list = [] // 私有变量
  return function (id) {
    if (_list.indexOf(id) >= 0) {
      console.log(‘已经存在此状态‘)
      return false
    } else {
      _list.push(id) // _list 自由变量
      console.log(‘保存状态成功‘)
      return true
    }
  }
}
var firstLoad = isFirstLoad()
firstLoad(10) // true
firstLoad(10) // false
firstLoad(20) // true
firstLoad(20) // false
上一篇:Canvas API详解
文章标题:前端JavaScript基础面试题01_JS基础知识(中)作用域、闭包
文章链接:http://soscw.com/essay/75812.html