題目1:
輸出10
// 1
var fnArr = [];
for (var i = 0; i < 10; i ++) {
(function(j) {
fnArr[i] = function() {
return j;
}
})(i)
}
console.log( fnArr[3]() );
// 2
var fnArr = [];
for (var i = 0; i < 10; i ++) {
fnArr[i] = (function(j) {
return function() {
return j;
}
})(i)
}
console.log( fnArr[3]() );
// 3
var fnArr = [];
for (let i = 0; i < 10; i ++) {
fnArr[i] = function() {
return i;
}
}
console.log( fnArr[3]() );
題目2
var Car = (function(){
var speed = 0;
function setSpeed(s){
speed = s
}
function getSpeed() {
return speed;
}
function accelerate() {
speed += 10;
}
function decelerate() {
speed = (speed >=10) ? speed-10 : 0;
}
function getStatus() {
if(speed > 0) {
return 'running';
}else {
return 'stop';
}
}
function checkSpeed() {
if(speed === 0) {
return 'error';
}else {
return speed;
}
}
return {
setSpeed: setSpeed,
getSpeed: getSpeed,
accelerate: accelerate,
decelerate: decelerate,
getStatus: getStatus,
speed: checkSpeed()
}
})()
題目3
輸出1屯伞,3违帆,2
定時(shí)器中的函數(shù)會(huì)被自動(dòng)放到隊(duì)尾執(zhí)行,所以會(huì)先依順序輸出1和3莽鸭,再執(zhí)行定時(shí)器中的函數(shù)吗伤,輸出2
題目4
會(huì)無(wú)限循環(huán)
定時(shí)器中的函數(shù)被自動(dòng)放到隊(duì)尾執(zhí)行,所以首先執(zhí)行while(flag)
語(yǔ)句硫眨,此時(shí)flag=true
足淆,所以會(huì)無(wú)限循環(huán)
題目5
會(huì)輸出0,1礁阁,2巧号,3,4和5個(gè)delayer:5
for(var i=0;i<5;i++){
(function(j){
setTimeout(function(){
console.log('delayer:' + j );
}, 0);
})(i)
console.log(i);
}
題目6 如何獲取元素的真實(shí)寬高
var height = window.getComputedStyle(elem,null).getPropertyValue('height')
題目7 URL 如何編碼解碼姥闭?為什么要編碼丹鸿?
- JavaScript提供四個(gè)URL的編碼/解碼方法
encodeURI()
encodeURIComponent()
decodeURI()
decodeURIComponent()
encodeURI()著眼于對(duì)整個(gè)URL進(jìn)行編碼,因此除了常見(jiàn)的符號(hào)以外棚品,對(duì)其他一些在網(wǎng)址中有特殊含義的符號(hào)"; / ? : @ & = + $ , #"靠欢,也不進(jìn)行編碼。編碼后铜跑,它輸出符號(hào)的utf-8形式门怪,并且在每個(gè)字節(jié)前加上%。
encodeURIComponent()只轉(zhuǎn)除了語(yǔ)義字符之外的字符疼进,元字符也會(huì)被轉(zhuǎn)義薪缆。因此秧廉,它的參數(shù)通常是URL的路徑或參數(shù)值伞广,而不是整個(gè)URL拣帽。
- 為什么要編碼?
1.URL只能使用英文字母嚼锄、阿拉伯?dāng)?shù)字和某些標(biāo)點(diǎn)符號(hào)减拭,不能使用其他文字和符號(hào)。這意味著区丑,如果URL中有漢字拧粪,就必須編碼后使用。
2.URL參數(shù)字符串中使用key=value鍵值對(duì)這樣的形式來(lái)傳參沧侥,鍵值對(duì)之間以&符號(hào)分隔可霎,如/s?q=abc&ie=utf-8。如果你的value字符串中包含了=或者&宴杀,那么勢(shì)必會(huì)造成接收Url的服務(wù)器解析錯(cuò)誤癣朗,因此必須將引起歧義的&和=符號(hào)進(jìn)行轉(zhuǎn)義,也就是對(duì)其進(jìn)行編碼旺罢。
題目8
var service = window.navigator.userAgent;
function isAndroid(){
return /android/i.test(service);
}
funcnction isIphone(){
return /iphone/i.test(service);
}
function isIpad(){
return /ipad/i.test(service);
}
function isIOS(){
return /iphone|ipad/i.test(service);
}