美文网首页
小笔试题

小笔试题

作者: 012ca771a446 | 来源:发表于2017-03-01 10:57 被阅读0次
    01
     function foo() {
            var num = 123;
            console.log(num);
        }
    
        foo();            //123
        console.log(num); //报错---> 无法调用局部变量
    
    02
     var scope = "global";
        foo();
        function foo() {
            console.log(scope); //undefined---> 函数内部的变量提升,但是没有定义
            var scope = "local";
            console.log(scope); //local--->就近原则
        }
        console.log(scope);       //global--->找到的是全局变量
    
    //----------------------------------------------------------分割线    下面是变量提升后的代码:
    
        var scope
        function foo() {
            var scope;
            console.log(scope); //undefined
            scope = "local";
            console.log(scope); //local
        }
        scope = "global";
        foo();
        console.log(scope);       //global
    ```
    ######03
    
    
        function f1(){
            if("a" in window){
                var a = 10;
            }
            console.log(a); //undefined
        }
        f1();
        //-------------------------------------------------------分割线  变量提升后的代码分析:
    
        function f1(){
            var a;   //这个a不在window中,因此不进入if语句中
            if("a" in window){
                a = 10;
            }
            console.log(a); //打印出来是undefined
        }
        f1();
    
    #####04
    ```
      if("a" in window){
            var a = 10;
        }
        console.log(a); //10
    
        //-------------------------------------------------------分割线  变量提升后的代码分析:
    
    var a;
    if("a" in window){
        a = 10//此处a为全局变量 即a为window的属性,符合条件进入if语句
    }
    console.log(a)//10
    ```
    
    ######05
    ```
        if(!"a" in window){
            var a = 10;
        }
        console.log(a); //? undefined  因为!"a" 无法进入if语句中 
    ```
    ######06
    ```
     var foo = 1;
        function bar() {
            if(!foo)
            {
                var foo = 10;
            }
            alert(foo); //  undefined? 10
        }
        bar();
    
        //-------------------------------------------------------分割线  变量提升后的代码分析:
    
     var foo;
     function bar() {
         var foo;
         if(!foo)
         {
              foo = 10;
         }
         alert(foo); //   10
     }
     foo = 1;
     bar();
    ```
    ######07
    ```
      function Foo() {
            getName = function(){
                console.log("1");
            };
            return this;
        }
        Foo.getName = function() {
            console.log("2");
        };
    
        Foo.prototype.getName = function(){
            console.log("3");
        };
    
        var getName = function() {
            console.log("4");
        };
        function getName(){
            console.log("5");
        }
        Foo.getName(); // 2
        getName(); // 4
        Foo().getName(); //1 ? 4 ? 2 ?报错  
        getName(); // ?    1
        new Foo.getName(); //  2
        new Foo().getName(); // 3
        new new Foo().getName(); // 3
    ```
    
    ######08
    
    ```
    function Foo() {
            this.getName = function(){
                console.log(1);
            };
            return this;
        }
        var getName = function() {
            console.log(2);
        };
    
        function getName(){
            console.log(3);
        }
    
        Foo().getName();  //1
        getName();        //1
    //注意输出的结果都为1
    ```
    
    ######09
    考察变量的提升,和作用域
      ```
    
        var name = 'World!';
    
        (function () {
    
            if (typeof name === 'undefined') {
                var name = '陈奕迅';
                console.log('Goodbye ' + name);// Goodbye 陈奕迅;
            } else {
                console.log('Hello ' + name);
            }
        })();
    ```
    ######10
    `console.log(Array.isArray(Array.prototype)); //true`
    ######11
    注意:这里有陷阱`` 所有的数值里0为假,所以结果为flase.如果换成1就为true;
    ```
    var a = [0];
        if ([0]) {
    
            //console.log([0] == true);//false
            console.log(a == true);//false
        } else {
            console.log("NO");
        }
    ```
    ######12
    请给出下面代码的输出结果
    ```
     (function(){
            var x = y = 1;
        })();
    
        console.log(y); //能够获取y的值吗?
        console.log(x); //能够获取x的值吗?
    ```
    这个稍微好理解点
    ```
     (function(){
            var x;//x是局部变量,外部无法访问
            y = 1;//这里y是全局变量
            x = y;
        })();
    
        console.log(y); //1
        console.log(x); //报错
    ```
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    相关文章

      网友评论

          本文标题:小笔试题

          本文链接:https://www.haomeiwen.com/subject/emrqgttx.html