美文网首页
闭包_定时器_BOM

闭包_定时器_BOM

作者: yytyff | 来源:发表于2017-07-14 21:28 被阅读0次

    题目1: 下面的代码输出多少?修改代码让fnArr[i] 输出 i。使用 两种以上的方法

     var fnArr = [];
    //第一种:
     for (var i = 0; i < 10; i ++) {
        (function(){
            var s = i;
            fnArr[i] =  function(){
                  return s;
                  };
        })()
     }
    //第二种:
     for (var i = 0; i < 10; i ++) {
            fnArr[i] = ( function(){
                var n  =i;
                return function(){
                       return n ;
               }
            })();
        }
        console.log( fnArr[3]() );  //3
    

    题目2: 封装一个汽车对象,可以通过如下方式获取汽车状态

    var Car =(function(){
            var speed = 0;
            function setSpeed(s){
                return speed = s;
            }
            function getSpeed(){
                return speed;
            }
            function accelerate(){
                return speed+=10;
            }
            function decelerate(){
                return speed>0?speed-=10:speed;
            }
            function getStatus(){
                return speed>0?'running':'stop';
            }
            return {
                "setSpeed" :setSpeed,
                "getSpeed" :getSpeed,
                "accelerate" :accelerate,
                "decelerate" :decelerate,
                "getStatus" :getStatus
            }
        })();
    Car.setSpeed(30);
    Car.getSpeed(); //30
    Car.accelerate();
    Car.getSpeed(); //40;
    Car.decelerate();
    Car.decelerate();
    Car.getSpeed(); //20
    Car.getStatus(); // 'running';
    Car.decelerate(); 
    Car.decelerate();
    Car.getStatus();  //'stop';
    //Car.speed;  //error
    

    题目3:下面这段代码输出结果是? 为什么?

    var a = 1;
    setTimeout(function(){
        a = 2;
        console.log(a);
    }, 0);
    var a ;
    console.log(a);
    a = 3;
    console.log(a);
    // 1 3 2   setTimeout函数,要等其他函数执行完再执行
    

    题目4:下面这段代码输出结果是? 为什么?

    var flag = true;
    setTimeout(function(){
        flag = false;
    },0)
    while(flag){}
    console.log(flag);
    //什么也不输出,因为setTimeout会等flag执行完才执行,而flag是true,会一直循环下去.
    

    题目5: 下面这段代码输出?如何输出delayer: 0, delayer:1...(使用闭包来实现)

    for(var i=0;i<5;i++){
      (function(){
            var n = i;
            setTimeout(function(){
                  console.log('delayer:' + n );
            }, 0);
    })()
           console.log(i);
    }
    

    题目6: 如何获取元素的真实宽高

     window.getComputedStyle()
     window.getComputedStyle()['height']
     window.getComputedStyle()['width']
    

    题目7: URL 如何编码解码?为什么要编码?

    JavaScript提供四个URL的编码/解码方法。
    
    1.decodeURI()
    2.decodeURIComponent()
    3.encodeURI()
    4.encodeURIComponent()
    //1.2为解码,3.4为编码
    //例如:encodeURI('http://book.jirengu.com/fe/前端基础/Javascript/bom.html')
    //"http://book.jirengu.com/fe/%E5%89%8D%E7%AB%AF%E5%9F%BA%E7%A1%80/Javascript/bom.html"
    

    一般来说,URL只能使用英文字母、阿拉伯数字和某些标点符号,不能使用其他文字和符号。这意味着,如果URL中有汉字,就必须编码后使用.

    题目8: 补全如下函数,判断用户的浏览器类型

    function isAndroid(){
        return /android/i.test(window.navigator.userAgent);
    }
    function isIphone(){
        return /iphone/i.test(window.navigator.userAgent);
    }
    function isIpad(){
        return /ipad/i.test(window.navigator.userAgent);
    }
    function isIOS(){
        return /ipad|iphone/i.test(window.navigator.userAgent);
    }
    
    

    相关文章

      网友评论

          本文标题:闭包_定时器_BOM

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