zoukankan      html  css  js  c++  java
  • 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;
  • 相关阅读:
    HTTP
    jQuery
    BOM与DOM
    Page类成员
    Web用户自定义控件
    ASP.NET服务端基本控件介绍
    ASP.NET中的验证控件
    ASP.NET数据绑定控件
    ASP.NET中的母版页
    ASP.NET缓存 Cache
  • 原文地址:https://www.cnblogs.com/liuna/p/7384204.html
Copyright © 2011-2022 走看看