• 前端面试题总结一(js变量和函数声明提前相关)


    好久没有更新博客了,^_^写写博客吧!下面是我总结的一些面试题,希望对大家有所帮助

    (1)题目如下:

      alert(a)
      var a=1
      function a(){
        alert(a)
     }

    好多人肯定会觉得输出的结果是undefined,那你就错了,因为function也要声明提前的所以输出的结果应该是::

    ƒ a(){
    alert(a)
    }

    更有意思的来了如果我把上面的题改为如下:

    alert(a)
    function a(){
     alert(a)
    }
    var a=1

    输出的结果应该是::

    ƒ a(){
    alert(a)
    }

    注意:***函数提升优先级比变量提升要高,且不会被变量声明覆盖,但是会被变量赋值覆盖***

    如果下面

    alert(a)
    function a(){
     alert(a)
    }
    var a=1
    alert(a)

    这个的输出结果为::

    第一次输出::
    ƒ a(){
    alert(a)
    }

    第二次输出::
    1

    (2)题目如下:

    var foo = "function";

    var foo;//它只是定义,全不会覆盖变量

    alert(foo);//所以返回 function
     
    (3)题目如下:
    var getName = function(){
        console.log(2);
    }
    function getName (){
        console.log(1);
    }
    getName();
     
    输出结果:
    2
     
    如果我稍作改动
    foo(); 
    var foo;
    function foo(){
     console.log(1);
    }
    foo=function(){
     console.log(2);
    }
    其输出的结果::
    1
    处理过程为:
    function foo(){
    console.log(1);
    }
    var foo; //并不执行,重复的声明
    foo();
    foo=function(){
    console.log(2);
    }

    ***函数会首先被提升,然后才是变量***
  • 相关阅读:
    构造函数作为友元函数的参数
    引用调用
    分块查找
    折半查找
    c++中map按key和value排序
    STL之map学习实例
    STL之stack
    STL之map
    STL之string
    STL之template类模板
  • 原文地址:https://www.cnblogs.com/hongsusu/p/9055513.html
Copyright © 2020-2023  润新知