闭包定时器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); }

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 下面的代码输出多少?修改代码让 fnArri 输出 i,使用 两种以上的方法 封装一个汽车对象,可以通过如下方式获...
    LeeoZz阅读 264评论 0 0
  • 题目1: 下面的代码输出多少?修改代码让fnArri 输出 i。使用两种以上的方法 题目2: 封装一个汽车对象,可...
    饥人谷_桶饭阅读 400评论 0 0
  • 题目1: 下面的代码输出多少?修改代码让 fnArr[i]() 输出 i。使用 两种以上的方法 var fnArr...
    saintkl阅读 376评论 0 0
  • 下面的代码输出多少?修改代码让 fnArri 输出 i。使用 两种以上的方法 var fnArr = [];for...
    jamesXiao_阅读 195评论 0 0
  • 题目1: 下面的代码输出多少?修改代码让 fnArri 输出 i。使用 两种以上的方法 输出10 修改为1var ...
    我是一只_鱼阅读 220评论 0 1