題目1: 下面的代碼輸出多少?修改代碼讓fnArri 輸出 i。使用兩種以上的方法
var fnArr = [];
for (var i = 0; i < 10; i ++) {
fnArr[i] = function(){
return i;
};
}
console.log( fnArr[3]() ); //輸出10,執(zhí)行的時(shí)候i等于10,所以整個(gè)數(shù)組元素執(zhí)行后都會(huì)是10
var fnArr = [];
for (var i = 0; i < 10; i ++) {
( function(){
var n=i;
fnArr[i] = function(){
return n;
};
})()
}
console.log( fnArr[3]() ); //立即執(zhí)行函數(shù)
var fnArr = [];
for (var i = 0; i < 10; i ++) {
fnArr[i] =( function(){
var n=i;
return function(){
return n;
}
}) ();
}
console.log( fnArr[3]() );//閉包
題目2: 封裝一個(gè)汽車對(duì)象,可以通過(guò)如下方式獲取汽車狀態(tài)
var Car = (function(){
var speed = 0;
function setSpeed(s){
speed = s;
}
function getSpeed(){
return speed;
}
function accelerate(){
speed += 10;
}
function decelerate(){
speed -= 10;
}
function getStatus(){
//speed > 0 ? console.log('running'):console.log('stop');
console.log(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: 下面這段代碼輸出結(jié)果是? 為什么?
var a = 1;
setTimeout(function(){
a = 2;
console.log(a);
}, 0);
var a ;
console.log(a);
a = 3;
console.log(a);//1,3,2
題目4: 下面這段代碼輸出結(jié)果是? 為什么?
var flag = true;
setTimeout(function(){
flag = false;
},0)
while(flag){}
console.log(flag);//setTimeout會(huì)等待它執(zhí)行完畢,此時(shí)flag永遠(yuǎn)是true,無(wú)限循環(huán)。
題目5: 下面這段代碼輸出?如何輸出delayer: 0, delayer:1...
(使用閉包來(lái)實(shí)現(xiàn))
for(var i=0;i<5;i++){
var clickNode = (function(){
var n=i;
return setTimeout(function(){
console.log('delayer:' + n);
}, 0);
})();
}
題目6: 如何獲取元素的真實(shí)寬高
主流瀏覽器通過(guò)window.getComputedStyle來(lái)獲取真實(shí)寬高,低版本IE通過(guò)element.currentStyle來(lái)獲取真實(shí)寬高。
題目7: URL 如何編碼解碼?為什么要編碼?
javaScript提供四個(gè)URL的編碼/解碼方法。decodeURL(),decodeURLCompoonent(),encodeURL(),encodeURLComponent(),對(duì)于Url來(lái)說(shuō),之所以要進(jìn)行編碼,是因?yàn)閁rl中有些字符會(huì)引起歧義。
題目8: 補(bǔ)全如下函數(shù),判斷用戶的瀏覽器類型
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);
}