闭包_定时器_BOM

题目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)