({} + {}).length 类型面试题

const a = ({} + {}).length;
复制代码

({}+{}).length 会转变成 ({}.toString() + {}.toString() ).length,{}.toString()的值为[object Object]为15,所以最后结果为30。

const b = ([] + []).length 
复制代码

一个空数组的length值为0

 const c = (function () { }).length  
复制代码

一个函数的length属性,其length 属性指明函数的形参个数。

const d = ([] + {}).length
复制代码

实际是变成了([]+{}的toString())。[]返回空字符串””值为0, 而{}返回”[object Object]”,
所以输出为15

 const a = [1, 2, 3].map(parseInt)


console.log(e);  //[1, NaN, NaN]
复制代码
  1. map函数
    将数组的每个元素传递给指定的函数处理,并返回处理后的数组

  2. parseInt函数(重点)
    概念:以第二个参数为基数来解析第一个参数字符串
    特点:接收两个参数parseInt(string,radix)
    string:字母(大小写均可)、数组、特殊字符
    radix:解析字符串的基数,基数规则如下:
    1) 区间范围介于2~36之间,不在范围内则会返回NaN
    2 ) 当参数为 0,parseInt() 会根据十进制来解析;
    3 ) 如果忽略该参数,默认的基数规则

const a = [1, 2, 3].map(parseInt)  等于
const a =[1, 2, 3].map(function(string,radix){
  return  parseInt(string,radix)
})
复制代码

parseInt(‘1’,0);radix=0,按十进制来解析,返回 1;
parseInt(‘2’,1);radix=1,不在区间内,返回 NaN;
parseInt(‘3’,2);radix=2,按二进制来解析,但string并不是以 0 和 1 开头的二进制类型,返回 NaN。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享