J11

作者: Cart86 | 来源:发表于2018-01-02 21:36 被阅读0次

    下面的代码输出多少?修改代码让 fnArri 输出 i。使用 两种以上的方法

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

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

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

    var Car = (function(){
    var speed = 0;
    function setSpeed(s){
    speed = s
    }
    ...
    return {
    setSpeed: setSpeed,
    ...
    }
    })()
    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

            var Car = (function(){
                var speed = 0;
                function setSpeed(s){
                    speed = s
                }
                function getSpeed(){
                    console.log(speed);
                }
                function accelerate(){
                    speed+=10;
                }
                function decelerate(){
                    speed-=10;
                }
                function getStatus(){
                    if(speed>0){
                        console.log('running');
                    }
                    else{
                        console.log('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
    

    下面这段代码输出结果是? 为什么?

    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会在当前代码队列整体执行结束后再执行,所以
    setTimeout(function(){
    a = 2;
    console.log(a);
    }, 0);
    打印的结果会出现在最后

    下面这段代码输出结果是? 为什么?

    var flag = true;
    setTimeout(function(){
    flag = false;
    },0)
    while(flag){} flag为true 会无限循环 而setTimeout是当前代码队列执行结束后执行,所以不会执行。
    console.log(flag); 不执行,无结果。

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

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


    image.png

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

    如何获取元素的真实宽高

    获取元素真实宽度:element.offsetWidth;
    获取元素真实高度:element.offsetHeight;


    image.png

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

    编码方式:
    encodeURI()
    encodeURIComponent()
    区别:
    encodeURI方法不会对下列字符编码 ASCII字母、数字、~!@#$&()=:/,;?+'
    encodeURIComponent方法不会对下列字符编码 ASCII字母、数字、~!
    ()'
    所以encodeURIComponent比encodeURI编码的范围更大。

    解码方式:
    decodeURI()
    decodeURIComponent()

    原因:由于不同浏览器以及操作系统下,浏览器对url的编码方式不同,策略比较混乱。因此由广大用户提交的请求中一旦含有非法字符,就可能会被浏览器以各种不同的编码方式进行编码再提交。
    在js中指定一种编码方式进行编码,可保证最后提交给服务器的请求是一致的。

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

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

    相关文章

      网友评论

          本文标题:J11

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