• js面试总结


    <div id="app">
        <button onClick="app()">点击1</button>
        <button onClick="app1()">点击2</button>
    </div>
    
    <script>
    function app () {
      console.log(this);
    }
    function app1 () {
        app();
    }
    app();

    </script>

    非严格模式下,打印window;   [object Window],  

    严格模式下,打印undefined

        app1();
        function app1(){
        }
        app1();
        function app1(){
            var i =3;
            console.log(i);
        }
        function app1(){
            var i =2;
            console.log(i);
        }

    输出如下:

    2

    2

    解释:后面的函数会覆盖前面的,所以执行最后一个函数。

    console.log(a);  //undefined
    var a = 3;
    console.log(a);  //function a()
    function a(){};

    由此可知为什么输出的是函数a。拓展一下:

    var a;
    function a(){};
    console.log(a);  //function a()
    var a = 3;
    function a(){};
    console.log(a);  //3

    同一个标识符的情况下,变量声明与函数声明都会提升;函数声明会覆盖变量声明,但不会覆盖变量赋值,即:如果声明变量的同时初始化或赋值那么变量优先级高于函数。

    a=10;
    console.log(a);
    var a = 3;
    function a(){}

    1)函数声明会置顶
    2)变量声明也会置顶
    3)函数声明比变量声明更置顶:)
    4)变量和赋值语句一起书写,在js引擎解析时,会将其拆成声明和赋值2部分,声明置顶,赋值保留在原来位置
    5)声明过的变量不会重复声明

    按以上的规则
    题主的代码等价为

    function a(){}
    var a;//实际无效
    console.log(a);
    a = 3;
  • 相关阅读:
    CentOS6 install Ruby 1.9.3
    php注释规范
    ecstore小记
    关于local storage 和 session storage以及cookie 区别简析
    local storage 简单应用‘’记住密码’
    点击按钮播放音频 停止后再次点击再次播放 添加背景音乐
    页面触底自动加载数据
    侧导航下载
    解决ie对于Bootstrap的兼容性问题
    js判断微信 选择浏览器打开
  • 原文地址:https://www.cnblogs.com/liuna/p/7384204.html
Copyright © 2020-2023  润新知