分享几个有趣的 JavaScript 题集

发布于 2022-03-18 12:50:43 字数 1446 浏览 1056 评论 0

1. []==[]

答案:false.

数组,在 Javascript 中是对象,对象使用 == 比较都是比较的引用。

简单的说,就是,如果是同一个对象,就相等,如果不是同一个对象,就不等。

每次使用 [] 都是新建一个数组对象,所以 [] == [] 这个语句里建了两个数据对象,它们不等。

2. [3.toString(),3..toString(),3...toString()]

答案:error,"3",error

Number 中的 toString(a),能够将数值转化成为a进制的值。但 a 缺省时,默认转化为十进制。

一般使用方法为:var n = 3;n.toString();

执行 3.toString(),因为 3 只是为数值型变量,为非 Number 实例,因此对于 3 不能直接调用 Number 方法。

而执行 3..toString(),会强制将3转化为数字实例,因此能够被解释,输出 3,同样可以使用 (3).toString()。

补充说明:3.toString() 在群里出的另外一道题里有类似问题,字面量到底是不是实例能不能调用方法的问题,具体可看 ecma 标准,而 3..toString() 之所以可执行,是因为在解析该句的时候,3 与其后的第一个点解析人为 3. 是个浮点数,转换完成后 toString()。

3. Array.isArray(Array.prototype)

答案:true

Array.prototype 为 [],Array.isArray(a) 是一个判断 a 是否为数组的方法。

判断对象是否为数组的方法:

1)ES5 函数 isArray(),该函数测试对象的内部 [[Class]] 属性是否为 Array:Arrray.isArray(a);
2)判断对象的构造函数是否为 Array:a.constructor === Array
3)使用对象内部 [[Class]] 属性创建结果字符串:Object.prototype.toString.call(a)
4)使用 instanceof 操作符测试对象是否继承自 Array:a instanceof Array。但由于,一个页面的 iframe 不会继承自另外一个页面的 iframe,该方法不可靠。

4. ["1","2","3"].map(parseInt);

5. var arr = Array(3); arr[0] = 2; arr.map(function(elem){return '1';});

答案:其实四和五可以同时解答,关于 map 会往 callback 里传三个参数,callback 能接收到几个看 callback 的形参个数。

parseInt 形参,两个 map 传入的参数分别是,当前对应元素值,和对应元素 index。
所以第四题,就可以看做 parseInt(1,0),parseInt(2,1),parseInt(3,2) 返回为数组。
第五题是关于数组元素没有初始化的情况,map 对于缺失元素直接返回 undefined。
所以答案:"1",undefined*2

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84961 人气
更多

推荐作者

醉城メ夜风

文章 0 评论 0

远昼

文章 0 评论 0

平生欢

文章 0 评论 0

微凉

文章 0 评论 0

Honwey

文章 0 评论 0

qq_ikhFfg

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文