- 輸出為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在當(dāng)前代碼隊(duì)列執(zhí)行結(jié)束后再執(zhí)行,異步執(zhí)行。
var flag = true;
setTimeout(function(){
flag = false;
},0)
while(flag){}
console.log(flag);
//不輸出,因?yàn)閣hile(flag)一直為true,所以一直循環(huán),setTimeout無(wú)法被執(zhí)行。
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.如何獲取元素的真實(shí)寬高
let style= window.getComputedStyle(element);
console.log(style.height, style.width);
7.URL 如何編碼解碼?為什么要編碼?
編碼的方式有兩種,第一種是使用encodeURI();參數(shù)為一個(gè)url字符串或字符串對(duì)象,通過(guò)這種方式編碼的url相比encodeURIComponent()編碼的將會(huì)把元字符和語(yǔ)義字符之外的字符,都進(jìn)行轉(zhuǎn)義,而后者除了語(yǔ)義字符之外的字符,元字符也會(huì)被轉(zhuǎn)義。因此,它的參數(shù)通常是URL的路徑或參數(shù)值,而不是整個(gè)URL。答:編碼的作用無(wú)非就是為了使用起來(lái)更加方便輕巧且易于區(qū)分,避免造成誤會(huì)比如當(dāng)我門要返回一個(gè)網(wǎng)址的時(shí)候,?back=xxx&value = return.這樣便不會(huì)把后面的value也當(dāng)成了前一個(gè)網(wǎng)頁(yè)的參數(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);
}