美文网首页
闭包定时器BOM

闭包定时器BOM

作者: 邵志远 | 来源:发表于2017-05-03 18:06 被阅读0次

    下面的代码输出多少?修改代码让 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

          本文链接:https://www.haomeiwen.com/subject/awaktxtx.html