下面的代码输出多少?修改代码让 fnArri 输出 i。使用 两种以上的方法
var fnArr = [];
for (var i = 0; i < 10; i ++) {
fnArr[i] = function(){
return i;
};
}
console.log( fnArr[3]() );
方法一:
var fnArr = [];
for (var i = 0; i < 10; i ++) {
fnArr[i] = (function(i){ //IIFE & 闭包
return function(){
return i;
}
})(i);
}
console.log( fnArr[3]() );
方法二:
var fnArr = [];
for (var i = 0; i < 10; i ++) {
!function (i){
fnArr[i] = function(){
return i;
};
}(i)
}
console.log( fnArr[5]() );
封装一个汽车对象,可以通过如下方式获取汽车状态
var Car = (function(){
var speed = 0;
function setSpeed(ss){
speed = ss
}
function getSpeed(){
return speed
}
function accelerate(){
speed+=10
}
function decelerate(){
speed-=10
}
function getStatus(){
if (speed>0) {
return "正跑呢";
}else{
return "停下了"
}
}
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(); // '正跑呢';
Car.decelerate();
Car.decelerate();
Car.getStatus(); //'停下了';
下面这段代码输出结果是? 为什么?
var a = 1;
setTimeout(function(){
a = 2;
console.log(a); //2 代码1
}, 0);
var a ;
console.log(a); // 1 代码2
a = 3;
console.log(a); //3
依次输出1 3 2 代码3
代码执行时先执行代码1 再执行代码2 定时器函数最后一个输出,
下面这段代码输出结果是? 为什么?
var flag = true;
setTimeout(function(){ //代码1 定时器后执行
flag = false;
},0)
while(flag){} //代码2 先执行 会陷入死循环
console.log(flag); //运行结果浏览器卡死
下面这段代码输出?如何输出delayer: 0, delayer:1...(使用闭包来实现)
for(var i=0;i<5;i++){
setTimeout(function(){
console.log('delayer:' + i );
}, 0);
console.log(i);
}
修改后:
for(var i=0;i<5;i++){
! function(i){
setTimeout(function(){
console.log('delayer:' + i );
}, 0);
}(i)
}
如何获取元素的真实宽高
var test = document.getElementsByClassName('test');
trueHeight = test.offsetHeight;
trueWidth = test.offsetWidth;
//兼容低版本IE
trueHeight = test.currentStyle.height;
trueWidth = test.currentStyle.width;
URL 如何编码解码?为什么要编码?
由于URL中只能有一些特定字符、英文、数字。有时候,由于在不同的地区,URL可能会出现中文等其他不允许在URL中出现的字符,这个时候就要对URL进行编码,成为一个合法的URL。
encodeURI()是对完整的URL进行编码,生成完整合法URL
var url ="http://jirengu/啦啦啦"
console.log(encodeURI(url)) //"http://jirengu/%E5%95%A6%E5%95%A6%E5%95%A6"
encodeURIComponent()是把一些不能出现在URL中的字符转换为合法字符
var url ="啦啦啦"
console.log(encodeURIComponent(url)) //"%E5%95%A6%E5%95%A6%E5%95%A6"
encodeURI方法不会对下列字符编码
1. ASCII字母
2. 数字
3. ~!@#$&*()=:/,;?+'
encodeURIComponent方法不会对下列字符编码
1. ASCII字母
2. 数字
3. ~!*()'
补全如下函数,判断用户的浏览器类型
function isAndroid(){
var system = window.navigator.userAgent;
return /Android (\d+\.\d+)/.test(system);
}
function isIphone(){
var system = window.navigator.userAgent;
return /iPhone/.test(system);
}
function isIpad(){
var system = window.navigator.userAgent;
return /iPad/.test(system);
}
function isIOS(){
var system = window.navigator.userAgent;
return /Mac OS X/.test(system);
}









网友评论