JavaScript面试题:什么是闭包?解释一下变量提升

2019-06-2007:51:46WEB前端开发Comments2,204 views字数 542阅读模式

3.什么是闭包

当我第一次解释闭包时,我常说函数中的函数;但是,它没有正确地描述闭包的确切含义。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/13690.html

闭包是在另一个作用域内创建一个封闭的词法范围。它通常会自动返回来生成这个词法环境。这个环境由创建闭包时在作用域内的任何局部变量组成。它就像一个微型工厂,用这些原料生产出具有特定功能的产品。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/13690.html

function add(n){
  var num = n
  return function addTo(x){
    return x + num
  }
}
addTwo = add(2)
addTwo(5)    
复制代码

闭包的另一个应用是创建私有变量和方法。JavaScript不像Java那样可以很好地支持oop。在JS中没有明确的方法来创建私有方法,但是闭包可以私有方法。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/13690.html

4.解释一下变量的提升

变量的提升是JavaScript的默认行为,这意味着将所有变量声明移动到当前作用域的顶部,并且可以在声明之前使用变量。初始化不会被提升,提升仅作用于变量的声明。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/13690.html

var x = 1
console.log(x + '——' + y) // 1——undefined
var y = 2
复制代码

作者:前端小智
链接:https://juejin.im/post/5d0976c66fb9a07efa091bcf
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/13690.html

文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/13690.html
  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/gcs/13690.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定