zoukankan      html  css  js  c++  java
  • 前端面试题(变量提示,闭包/作用域)

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

      
      
  • 相关阅读:
    i++ 与++i
    jquery下的domcument
    jquery
    MVC MVP MVVM
    两个for还是一个for?
    华为云服务器FTP连接
    vue-i18n 使用方法
    在本地运行vue build 文件
    vue项目中使用模拟数据 MOCK
    超简单 超详细 vue项目中使用svg图标 阿里巴巴图标库
  • 原文地址:https://www.cnblogs.com/jiebba/p/6515261.html
Copyright © 2011-2022 走看看