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

闭包_定时器_BOM

作者: Rising_suns | 来源:发表于2017-04-03 21:08 被阅读0次

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

    var fnArr = [];
    for (var i = 0; i < 10; i ++) {
        fnArr[i] =  function(){
            return i;
        };
    }
    console.log( fnArr[3]() );  //输出10;
    

    修改一: var fnArr = []; for (var i = 0; i < 10; i ++) { (function(i){ fnArr[i] = function(){ return i; }; }(i)) } console.log( fnArr[3]() ); //输出3; 修改二: var fnArr = []; for (var i = 0; i < 10; i ++) { fnArr[i] = (function(i){ return function(){ return i; }; }(i)) } console.log( fnArr[3]() ); //输出3;

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

    var Car = (function () { var speed = 0; function setSpeed(s) { speed = s } function getSpeed() { return speed; } function accelerate(i = 10) { speed += i; } function decelerate(i = 10) { speed -= i; } function getStatus() { if (speed > 0) { return 'running'; } else { return '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.下面这段代码输出?如何输出delayer: 0, delayer:1...(使用闭包来实现)

    `for(var i=0;i<5;i++){
    (function(i){
    setTimeout(function(){
    console.log('delayer:' + i );
    }, 0);
    })(i);
    console.log(i);
    } //输出:0,1,2,3,4,delayer:0,delayer:1,delayer:2,delayer:3,delayer:4

    5.如何获取元素的真实宽高 ?

    function style(element,pseduoElement){ return element.currentStyle ?element.currentStyle : window.getComputedStyle(element,pseduoElement); } var twidth=style(element).width; var theight=style(element).height; var tbackground=style(element).backgroundColor;

    6. URL 如何编码解码?为什么要编码?

    • 使用encodeURI()/encodeURIComponent()进行编码;使用decodeURI()/decodeURIComponent()进行解码;
    • 因为需要编码URL中的参数还是URL的时候,不编码就会错误,那么encodeURIComponent是最好方法。如果不对参数的值编码,容易造成歧义。

    7. 补全如下函数,判断用户的浏览器类型

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

    8.

    相关文章

      网友评论

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

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