闭包定时器BOM

下面的代码输出多少?修改代码让 fnArri 输出 i。使用 两种以上的方法

方法一:
var fnArr = []; for (var i = 0; i < 10; i ++) { (function(){ var n = i ; fnArr[i] = function(){ return n; }; })(); } console.log( fnArr[3]() );
方法二:
var fnArr = []; for (var i = 0; i < 10; i ++) { fnArr[i] =( function(i){ return function(){ return i ; }; })(i) } console.log( fnArr[3]() );

封装一个汽车对象,可以通过如下方式获取汽车状态

var Car = (function(){ var speed = 0; function setSpeed(s){ return speed = s ; } function getSpeed(s){ return speed ; } function accelerate(s){ return speed+=10; } function decelerate(s){ if(speed>=0){ return speed-=10; } } function getStatus(s){ return speed>0? "running":"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

下面这段代码输出结果是? 为什么?

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是异步执行的,等其余代码执行完后主线任务才会加载执行它,所以先执行
var a = 1; var a ; console.log(a); a = 3; console.log(a);
再执行setTimeout(function(){ a = 2; console.log(a); }, 0);

下面这段代码输出结果是? 为什么?

var flag = true; setTimeout(function(){ flag = false; },0) while(flag){} console.log(flag);
不会执行,因为setTimeout在后面执行,所以false永远是true,无限循环

题目5: 下面这段代码输出?如何输出delayer: 0, delayer:1...(使用闭包来实现)

for(var i=0;i<5;i++){ (function(i){ setTimeout(function(){ console.log('delayer:' + i ); }, 0); })(i) console.log(i); }

如何获取元素的真实宽高

标准流:element.getComputedStyle(元素,伪类).height/width
IE:element.currentStyle.heigth/width

URL 如何编码解码?为什么要编码?

编码
encodeURI('') encodeURIComponent('') //encodeURIComponent 比 encodeURI 编码的范围更大
解码
decodeURI('') decodeURIComponent('')
编码是为了避免解析网址时产生歧义发生错误

补全如下函数,判断用户的浏览器类型

function isAndroid(){ /Android/i.test(window.navigator.userAgent); } funcnction isIphone(){ /iphone/i.test(window.navigator.userAgent); } function isIpad(){ /ipad/i.test(window.navigator.userAgent); } function isIOS(){ /(ipad)|(iphone)/i.test(window.navigator.userAgent); }

你可能感兴趣的:(闭包定时器BOM)