美文网首页
进阶-任务11

进阶-任务11

作者: nicole914 | 来源:发表于2017-03-20 21:13 被阅读0次

题目1:

输出10

// 1
var fnArr = [];
    for (var i = 0; i < 10; i ++) {
        (function(j) {
            fnArr[i] = function() {
                return j;
            }
        })(i)
    }
    console.log( fnArr[3]() );
// 2
    var fnArr = [];
    for (var i = 0; i < 10; i ++) {
        fnArr[i] = (function(j) {
            return function() {
                return j;
            }   
        })(i)
    }
    console.log( fnArr[3]() );
// 3
    var fnArr = [];
    for (let i = 0; i < 10; i ++) {
        fnArr[i] = function() {
            return i;
        }
    }
    console.log( fnArr[3]() );

题目2

var Car = (function(){
  var speed = 0;
  function setSpeed(s){
    speed = s
  }
  function getSpeed() {
    return speed;
  }
  function accelerate() {
    speed += 10;
  }
  function decelerate() {
    speed = (speed >=10) ? speed-10 : 0;
  }
  function getStatus() {
    if(speed > 0) {
      return 'running';
    }else {
      return 'stop';
    }
  }
  function checkSpeed() {
    if(speed === 0) {
      return 'error';
    }else {
      return speed;
    }
  }
  return {
  setSpeed: setSpeed,
  getSpeed: getSpeed,
  accelerate: accelerate,
  decelerate: decelerate,
  getStatus: getStatus,
  speed: checkSpeed()
  }
})()

题目3

输出1,3,2
定时器中的函数会被自动放到队尾执行,所以会先依顺序输出1和3,再执行定时器中的函数,输出2

题目4

会无限循环
定时器中的函数被自动放到队尾执行,所以首先执行while(flag)语句,此时flag=true,所以会无限循环

题目5

会输出0,1,2,3,4和5个delayer:5

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

题目6 如何获取元素的真实宽高

var height = window.getComputedStyle(elem,null).getPropertyValue('height')

题目7 URL 如何编码解码?为什么要编码?

  • JavaScript提供四个URL的编码/解码方法
encodeURI()
encodeURIComponent()
decodeURI()
decodeURIComponent()

encodeURI()着眼于对整个URL进行编码,因此除了常见的符号以外,对其他一些在网址中有特殊含义的符号"; / ? : @ & = + $ , #",也不进行编码。编码后,它输出符号的utf-8形式,并且在每个字节前加上%。
encodeURIComponent()只转除了语义字符之外的字符,元字符也会被转义。因此,它的参数通常是URL的路径或参数值,而不是整个URL。

  • 为什么要编码?
    1.URL只能使用英文字母、阿拉伯数字和某些标点符号,不能使用其他文字和符号。这意味着,如果URL中有汉字,就必须编码后使用。
    2.URL参数字符串中使用key=value键值对这样的形式来传参,键值对之间以&符号分隔,如/s?q=abc&ie=utf-8。如果你的value字符串中包含了=或者&,那么势必会造成接收Url的服务器解析错误,因此必须将引起歧义的&和=符号进行转义,也就是对其进行编码。

题目8

var service = window.navigator.userAgent;
function isAndroid(){
  return /android/i.test(service);
}
funcnction isIphone(){
  return /iphone/i.test(service);
}
function isIpad(){
  return /ipad/i.test(service);
}
function isIOS(){
  return /iphone|ipad/i.test(service);
}

相关文章

  • 进阶任务11

    输出为10 6.如何获取元素的真实宽高 7.URL 如何编码解码?为什么要编码? 编码的方式有两种,第一种是使用e...

  • 进阶任务-11

    下面的代码输出多少?修改代码让 fnArr[i]() 输出 i. 两种以上的方法 注:es6中的let是非常方便的...

  • 进阶 任务 11

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

  • 进阶任务11

    题目1: 下面的代码输出多少?修改代码让 fnArr[i]() 输出 i。使用 两种以上的方法 使用新的函数,创建...

  • 进阶任务11

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

  • 进阶-任务11

    题目1: 输出10 题目2 题目3 输出1,3,2定时器中的函数会被自动放到队尾执行,所以会先依顺序输出1和3,再...

  • Swift多线程:GCD进阶,单例、信号量、任务组

    Swift多线程:GCD进阶,单例、信号量、任务组 Swift多线程:GCD进阶,单例、信号量、任务组

  • 小龙家KK语音虐虐L1学习复盘

    嘻嘻,今天是2018年11月11日,对我来说,特别的是参加的KK语音虐虐L1学习任务通过,然后准备进阶L2的学习,...

  • 进阶-任务2

    1、JavaScript 定义了几种数据类型? 哪些是原始类型?哪些是复杂类型?原始类型和复杂类型的区别是什么? ...

  • 进阶-任务2

    1、JavaScript 定义了几种数据类型? 哪些是原始类型?哪些是复杂类型?原始类型和复杂类型的区别是什么? ...

网友评论

      本文标题:进阶-任务11

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