題目1: 下面的代碼輸出多少双谆?修改代碼讓 fnArri 輸出 i屯换。使用 兩種以上的方法
方法1:
var fnArr = [];
for (var i = 0; i < 10; i ++) {
(function(i){
fnArr[i] = function(){
return i;
};
})(i)
}
console.log( fnArr[3]() ); //
方法2:
var fnArr = [];
for (var i = 0; i < 10; i ++) {
fnArr[i]=(function(n){
var n=i
return function(){
return n;
}
}
})()
}
console.log( fnArr[3]() );
題目2: 封裝一個汽車對象薯嗤,可以通過如下方式獲取汽車狀態(tài);
var Car = (function(){
var speed = 0;
function setSpeed(s){
speed = s;
return speed
}
function getSpeed(s){
console.log(speed)
return speed;
}
function accelerate(){
speed+=10;
}
function decelerate(){
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();
Car.accelerate();
Car.getSpeed();
Car.decelerate();
Car.decelerate();
Car.getSpeed();
Car.getStatus();
Car.decelerate();
Car.decelerate();
Car.getStatus();
//Car.speed;```
題目3:下面這段代碼輸出結(jié)果是? 為什么?
var a = 1;
setTimeout(function(){
a = 2;
console.log(a);//2
}, 0);
var a ;
console.log(a);//1
a = 3;
console.log(a);//3
//因為setTimeout最后輸出的,所以從上到下會跳過setTimeout執(zhí)行,
題目4:下面這段代碼輸出結(jié)果是? 為什么?
var flag = true;
setTimeout(function(){
flag = false;
},0)
while(flag){}
console.log(flag);//因為while中flag為真,所以一直死循環(huán)輸出flag,而setTimeout是在最后執(zhí)行,如果while一直不結(jié)束輸出,他就永遠不會執(zhí)行
題目5: 下面這段代碼輸出栏尚?如何輸出delayer: 0, delayer:1...(使用閉包來實現(xiàn))
for(var i=0;i<5;i++){
(function(){
var n=i
setTimeout(function(){
console.log('delayer:' + n);
}, 0);
})()
console.log(i);
}
題目6: 如何獲取元素的真實寬高
主流瀏覽器:
window.getComputedStyle(element)['width']
window.getComputedStyle(element)['height']
>低版本IE瀏覽器通過element.currentStyle獲取寬高
題目7: URL 如何編碼解碼归苍?為什么要編碼宠默?
>JavaScript提供四個URL的編碼/解碼方法麸恍。
>通過encodeURI()、encodeURIComponent()搀矫、decodeURI抹沪、>decodeURIComponent方法來編碼解碼。當(dāng)
>我們需要編碼一個URL并且要使用的時候瓤球,使用encodeURI來編碼采够。當(dāng)需要編碼URL中的參數(shù)時,用
>encodeURIComponent
為什么需要Url編碼冰垄,通常如果一樣?xùn)|西需要編碼蹬癌,說明這樣?xùn)|西并不適合傳輸。原因多種多樣虹茶,如
>Size過大逝薪,包含隱私數(shù)據(jù),對于Url來說蝴罪,之所以要進行編碼董济,是因為Url>中有些字符會引起歧義。
>例如Url參數(shù)字符串中使用key=value鍵值對這樣的形式來傳參要门,鍵值對之>間以&符號分隔虏肾,如/s?
>q=abc&ie=utf-8。如果你的value字符串中包含了=或者&欢搜,那么勢必會造成>接收Url的服務(wù)器解析錯
>誤封豪,因此必須將引起歧義的&和=符號進行轉(zhuǎn)義,也就是對其進行編碼炒瘟。 >又如吹埠,Url的編碼格式采用
>的是ASCII碼,而不是Unicode,這也就是說你不能在Url中包含任何非>ASCII字符缘琅,例如中文粘都。否則
>如果客戶端瀏覽器和服務(wù)端瀏覽器支持的字符集不同的情況下,中文可能>會造成問題
8: 補全如下函數(shù)刷袍,判斷用戶的瀏覽器類型
```function isAndroid(){
return /Android/.test(window.navigator.userAgent)
}
funcnction isIphone(){
return /iphone/.test(window.navigator.userAgent)
}
function isIpad(){
return /ipad/.test(window.navigator.userAgent)
}
function isIOS(){
return /Mac/.test(window.navigator.userAgent)
}