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.封装一个汽车对象,可以通过如下方式获取汽车状态。
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.下面这段代码输出结果是? 为什么?
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会在当前代码执行队列结束后执行;
4.下面这段代码输出?如何输出delayer: 0, delayer:1...
(使用闭包来实现)
`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.如何获取元素的真实宽高 ?
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()进行编码;使用decodeURI()/decodeURIComponent()进行解码;
- 因为需要编码URL中的参数还是URL的时候,不编码就会错误,那么encodeURIComponent是最好方法。如果不对参数的值编码,容易造成歧义。
7. 补全如下函数,判断用户的浏览器类型
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); }
网友评论