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了。

  • 相关阅读:
    移动平台的meta标签-----神奇的功效
    JAVA工程命名规范
    linux 查看tomcat 实时日志
    linux 配置全局jdk环境
    AJAX 前后端交互 验证信息是否正确
    数据库更新DATE类型的时间
    jq 克隆 移除table
    eclipse 安装javaEE插件 和htmlxmljsp编辑器
    oracle 正序 逆序 排序查询
    JQ遍历 input 并修改name属性
  • 原文地址:https://www.cnblogs.com/iflygofy/p/6651342.html
Copyright © 2011-2022 走看看