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.封裝一個(gè)汽車對象昧穿,可以通過如下方式獲取汽車狀態(tài)。
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.下面這段代碼輸出結(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 因?yàn)閟etTimeout會(huì)在當(dāng)前代碼執(zhí)行隊(duì)列結(jié)束后執(zhí)行橙喘;
4.下面這段代碼輸出时鸵?如何輸出delayer: 0, delayer:1...
(使用閉包來實(shí)現(xiàn))
`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.如何獲取元素的真實(shí)寬高 ?
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()進(jìn)行編碼饰潜;使用decodeURI()/decodeURIComponent()進(jìn)行解碼;
- 因?yàn)樾枰幋aURL中的參數(shù)還是URL的時(shí)候和簸,不編碼就會(huì)錯(cuò)誤彭雾,那么encodeURIComponent是最好方法。如果不對參數(shù)的值編碼锁保,容易造成歧義薯酝。
7. 補(bǔ)全如下函數(shù),判斷用戶的瀏覽器類型
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); }