码迷,mamicode.com
首页 > 编程语言 > 详细

javascript 经典问题汇总

时间:2017-03-31 15:03:02      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:color   顺序   参数   注意   索引   存在   函数   win   数组   

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

javascript 经典问题汇总

标签:color   顺序   参数   注意   索引   存在   函数   win   数组   

原文地址:http://www.cnblogs.com/iflygofy/p/6651342.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!