进阶任务11

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

或者

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

        function setSpeed(s) {
             return speed = s
        }
        function getSpeed(){
            console.log(speed)
        }
        function accelerate(){
            return speed += 10
        }
        function decelerate() {
            return speed -= 10
        }
        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';
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在当前代码队列执行结束后再执行,异步执行。
var flag = true;
setTimeout(function(){
    flag = false;
},0)
while(flag){}
console.log(flag);
//不输出,因为while(flag)一直为true,所以一直循环,setTimeout无法被执行。
for(var i=0;i<5;i++){
    setTimeout(function(){
         console.log('delayer:' + i );
    }, 0);
    console.log(i);
}
//输出0 1 2 3 4 delayer:5 delayer:5 delayer:5 delayer:5 delayer:5

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

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

let style= window.getComputedStyle(element);
console.log(style.height, style.width);

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

编码的方式有两种,第一种是使用encodeURI();参数为一个url字符串或字符串对象,通过这种方式编码的url相比encodeURIComponent()编码的将会把元字符和语义字符之外的字符,都进行转义,而后者除了语义字符之外的字符,元字符也会被转义。因此,它的参数通常是URL的路径或参数值,而不是整个URL。答:编码的作用无非就是为了使用起来更加方便轻巧且易于区分,避免造成误会比如当我门要返回一个网址的时候,?back=xxx&value = return.这样便不会把后面的value也当成了前一个网页的参数值.

function isAndroid(){
    return /Android/.test(navigator.userAgent);
}
funcnction isIphone(){
    return /iPhone/.test(navigator.userAgent);
}
function isIpad(){
    return /iPad/.test(navigator.userAgent);
}
function isIOS(){
    return /(iPad)|(iPhone)/i.test(navigator.userAgent);
}

你可能感兴趣的:(进阶任务11)