前端面试题(变量提示,闭包/作用域)

简介: 1.变量提升  1.函数提升,先把函数提到最前面,然后是变量提升   var  value = 1;  var  test  =  function(){    console.log(value)    var value =  2;  }  function test(){    console.
1.变量提升

  1.函数提升,先把函数提到最前面,然后是变量提升

 

  var  value = 1;

  var  test  =  function(){

    console.log(value)

    var value =  2;

  }

  function test(){

    console.log(value+1)

  }

  test();         //  undefined

 

  首先是test()函数会被提升到最先,

  然后执行value=1赋值,test = function(){}赋值

  var  test = function(){} 里面的value 提升,先执行 var value ;然后执行console.log(value),所以输出 undefined

  最后转变为

 

  function test(){

    console.log(value+1)

  }

  var  value = 1;

  var  test  =  function(){

    var value;      //  undefined

    console.log(value)

    value =  2;

  }

  test();      

 

2.闭包/作用域

 

  function foo(y){

   var  num = 3;
return function (x){
console.log(x+y+(++num));
}
}
var bar = foo(5)
bar(20) //29
bar(21)   //31



解析为:
在foo这函数的作用域下
var num = 3
var bar = function(x){
  console.log(x+y+(++num))
}
bar(20) num=++num=4 x = 20 y=5 //29
bar(21) num=++num=5 x = 21 y=5 //31


闭包:可以让外部访问局部变量的函数

(function(w){
  var a = 50;
  w.test = a
})(window)
console.log(window.test);

闭包(function(w){var a = 50;w.test = a})里面的变量只能通过 window 来得到

  
  
相关文章
|
1月前
|
缓存 前端开发 JavaScript
"面试通关秘籍:深度解析浏览器面试必考问题,从重绘回流到事件委托,让你一举拿下前端 Offer!"
【10月更文挑战第23天】在前端开发面试中,浏览器相关知识是必考内容。本文总结了四个常见问题:浏览器渲染机制、重绘与回流、性能优化及事件委托。通过具体示例和对比分析,帮助求职者更好地理解和准备面试。掌握这些知识点,有助于提升面试表现和实际工作能力。
66 1
|
3月前
|
Web App开发 前端开发 Linux
「offer来了」浅谈前端面试中开发环境常考知识点
该文章归纳了前端开发环境中常见的面试知识点,特别是围绕Git的使用进行了详细介绍,包括Git的基本概念、常用命令以及在团队协作中的最佳实践,同时还涉及了Chrome调试工具和Linux命令行的基础操作。
「offer来了」浅谈前端面试中开发环境常考知识点
|
3月前
|
存储 前端开发 JavaScript
前端基础(二)_JavaScript变量、JavaScript标识符、JavaScript获取元素、JavaScript的鼠标事件
本文介绍了JavaScript变量的声明和使用、标识符的命名规则、如何获取和操作HTML元素,以及JavaScript的鼠标事件处理,通过示例代码展示了这些基础知识点在实际开发中的应用。
49 2
前端基础(二)_JavaScript变量、JavaScript标识符、JavaScript获取元素、JavaScript的鼠标事件
|
2月前
|
存储 前端开发 JavaScript
前端必备知识:闭包的概念、作用与应用
前端必备知识:闭包的概念、作用与应用
22 1
|
4月前
|
存储 XML 移动开发
前端大厂面试真题
前端大厂面试真题
|
2月前
|
Web App开发 JavaScript 前端开发
前端Node.js面试题
前端Node.js面试题
|
4月前
|
Java
【Java基础面试七】、请介绍一下实例变量的默认值
这篇文章介绍了Java中实例变量的默认值:引用数据类型的默认值是null,而基本数据类型的默认值根据其类型分别是0、0L、0.0F、0.0、'\u0000'和false。
【Java基础面试七】、请介绍一下实例变量的默认值
|
4月前
|
存储 前端开发 JavaScript
44 个 React 前端面试问题
【8月更文挑战第18天】
58 2
【IO面试题 五】、 Serializable接口为什么需要定义serialVersionUID变量?
serialVersionUID用于标识类的序列化版本,确保在反序列化时类的版本一致性,避免因类定义变更导致的不兼容问题。
|
4月前
|
存储 JavaScript 前端开发
2022年前端js面试题
2022年前端js面试题
46 0
下一篇
DataWorks