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


    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 来得到

      
      
  • 相关阅读:
    【leetcode】1324. Print Words Vertically
    【leetcode】1323. Maximum 69 Number
    【leetcode】1320. Minimum Distance to Type a Word Using Two Fingers
    【leetcode】1319. Number of Operations to Make Network Connected
    7系列GTX中的疑惑
    8b10b
    hB
    MATLAB实现最优低通滤波器的函数
    modelsim读写TXT文件
    ILA用法
  • 原文地址:https://www.cnblogs.com/jiebba/p/6515261.html
Copyright © 2020-2023  润新知