美文网首页
闭包_定时器_BOM

闭包_定时器_BOM

作者: 饥人谷_全 | 来源:发表于2017-02-07 17:59 被阅读0次

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

使用立即执行函数生成闭包

//方法1
var fnArr = [];
for (var i = 0; i < 10; i ++) {
  fnArr[i] =  (function(n){

    return function(){
      console.log(n);
    };
  }(i));
}
console.log( fnArr[3]() );  

//方法2
var fnArr = [];
for (var i = 0; i < 10; i ++) {
  (function(n){

    return fnArr[i] =  function(){
      return n;
    }}(i));
 
}
console.log( fnArr[3]() );  

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

var Car = (function(){
   var speed = 0;
   function setSpeed(s){
       speed = s
   }
   function getSpeed(){
     console.log(speed);
   }
   function accelerate(){
     speed+=10;
   }
   function decelerate(){
     speed-=10;
   }
   function getStatus(){
     if(speed>0)
       console.log('running');
     if(speed==0)
       console.log('stop');
     if(speed<0)
       console.log('error');
     
   }
   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

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

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

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

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

如何获取元素的真实宽高

兼容IE 获取当元素计算后的样式,再根据属性即可获取各种样式。
element.currentStyle ?element.currentStyle : window.getComputedStyle(element, null)

URL 如何编码解码?

  • encodeURI方法不会对下列字符编码 ASCII字母 数字 ~!@#$&*()=:/,;?+'
  • encodeURIComponent方法不会对下列字符编码 ASCII字母 数字 ~!()'
    所以encodeURIComponent比 encodeURI
    *编码的范围更大。
    实际例子来说,encodeURIComponent会把 http:// 编码成 http%3A%2F%2F 而encodeURI却不会。

为什么要编码

因为一些历史的原因URL设计者使用US-ASCII字符集表示URL。(原因比如ASCII比较简单;所有的系统都支持ASCII)
为了满足URL的特性,设计者就将转义序列移植了进去,来实现通过ASCII字符集的有限子集对任意字符或数据进行编码。
URL转义表示法包含一个百分号,后面跟上两个表示字符ASCII码的十六进制数值。

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

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 /(iPad)|(iPhone)/i.test(navigator.userAgent);
}

相关文章

  • 闭包_定时器_BOM

    题目1: 下面的代码输出多少?修改代码让 fnArri 输出 i。使用 两种以上的方法方法1: 题目2: 封装一个...

  • 闭包_定时器_BOM

    题目1: 下面的代码输出多少?修改代码让fnArr[i]() 输出 i。使用两种以上的方法 题目2: 封装一个汽车...

  • 闭包-定时器-BOM

    1- 算出代码的输出值;修改代码让 fnArri 输出 i 结果:输出 10,因为循环的时候 fnArr[i] =...

  • 闭包_定时器_BOM

    1、下面的代码输出多少?修改代码让 fnArr[i]() 输出 i。使用两种以上的方法。 方法一: 方法二: 方法...

  • 闭包&&定时器&&BOM

    1、下面的代码输出多少?修改代码让 fnArri 输出 i。使用 两种以上的方法 方法一:闭包 方法二:和方法一差...

  • 闭包_定时器_BOM

    题目1: 下面的代码输出多少?修改代码让 fnArri 输出 i。使用 两种以上的方法 题目2: 封装一个汽车对象...

  • 闭包、定时器、BOM

    下面的代码输出多少?修改代码让 fnArr[i]() 输出 i。使用 两种以上的方法 改造如下: 封装一个汽车对象...

  • 闭包_定时器_BOM

    1. 题目1: 下面的代码输出多少?修改代码让 fnArri 输出 i。使用两种以上的方法 2. 封装一个汽车对象...

  • 闭包、定时器、BOM

    1.下面的代码输出多少?修改代码让 fnArri 输出 i。使用 两种以上的方法 方法一 方法二: 方法三: 2....

  • 闭包-定时器-BOM

    1. 下面的代码输出多少?修改代码让fnArr[i]()输出 i。使用两种以上的方法 方法一: 方法二: 2. 封...

网友评论

      本文标题:闭包_定时器_BOM

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