zoukankan      html  css  js  c++  java
  • javascript 经典问题汇总

    1. ["1","2","3"].map(parseInt) 为多少?
    答:[1,NaN,NaN]
    array.map(function(currentValue,index,arr), thisValue)
    原数组中的元素经过该方法后返回一个新的元素。
    currentValue
        callback的第一个参数,数组中当前被传递的元素。必须。
    index
        callback的第二个参数,数组中当前被传递的元素的索引。可选
    array
        callback的第三个参数,调用 map 方法的数组。可选
    thisValue.  callback函数里的this值 默认是window对象

    parseInt(string, radix)
    string: 需要转化的字符,如果不是字符串会被转换,忽视空格符。
    radix:数字2-36之前的整型。默认使用10,表示十进制。
    需要注意的是,如果radix在2-36之外会返回NaN。
    因为parseInt函数接收2个参数,string,radix,如果map函数返回了这两个参数,不管意义是否是所期望的,都会将其作为参数执行。
    以1-0-1,2,3为例,map(parseInt)中,parseInt作为callback函数执行的将是:parseInt('1',0)(前面那个数字1自动被转换为字符串1),其他同上。
    看下面的执行函数结果
    parseInt('1', 0);
    parseInt('2', 1);
    parseInt('3', 2);
    所以遍历的结果是数组的第一个元素是可以正常显示。传入的键值为1,键名为0  输出1
    而第二次  传入键值为2,键名为1  输出NaN  因为1进制的不可能会大于1的。
    第三次传入键值为3,键名为2  输出了NaN  同样的,二进制是不会出现3的。
    所以得到1,NaN,NaN

    2.var a = b =10;
         (function(){
             var a = b = 20;
          })();
    console.log(a);
    console.log(b);
    问:输出的 a = ?    b = ?
    答:a=10 ,b=20

    连等的问题。所以说连等不要随便乱用。
    连等赋值的时候,如a = b = c;
    这个执行顺序从右往左。
    就相当与b = c;a = b;
    并不是 b=c; a = c;
    所以回到题目。
    一开始是var a = b = 10;
    这个时候就是b = 10;var a = b; 所以a = 10; 因为js 的var声明不在严格模式下的话,是可以不用写的,因为b 不存在,所以也自动声明了。
    之后再在一个立即执行函数里面,在这个作用域下执行了var a = b = 20;
    就相当于b = 20 ;var a = b; 因为这时候b在全局外部已经声明了所以修改的就是全局的变量。
    而a前面还有var ,所以这个a只是针对该作用域下的变量。并没有修改全局变量的a.
    所以在全局外部打印a = 10   b = 20了。

  • 相关阅读:
    为恶畏人知,恶中犹有善路,为善而急人知,善处即是恶根。
    win7 64位 php环境开启curl服务Call to undefined function
    php根据汉字获取拼音(php基于拼音搜索实现原理)
    Fatal error: Call to undefined function mb_detect_encoding()
    学一点 mysql 双机异地热备份----快速理解mysql主从,主主备份原理及实践
    springMVC介绍及配置
    Java--详解WebService技术
    网站SEO优化
    Java温故而知新(5)设计模式详解(23种)
    java温故而知新(9)OOP(面向对象编程)理念
  • 原文地址:https://www.cnblogs.com/iflygofy/p/6651342.html
Copyright © 2011-2022 走看看