前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2015.12.02 HTML5真题练习

2015.12.02 HTML5真题练习

作者头像
HTML5学堂
发布2018-03-12 14:55:52
5670
发布2018-03-12 14:55:52
举报
文章被收录于专栏:HTML5学堂HTML5学堂

HTML5学堂:每天一道题,强壮程序员!今日主要涉及昨日题目的解答,以及一道涉及二进制的题目。

HTML5真题【2015.12.01】答案解析

昨日真题题目如下,最终输出的结果是多少?

代码语言:javascript
复制
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>HTML5学堂 - H5course</title>
<link rel="stylesheet" href="reset.css">
</head>
<body>
<script>
    console.log([] + [] + "foo".split(""));
</script>
</body>
</html>

本题目的答案是:f,o,o。

答案解析:本题目主要涉及类型转换、数组、字符串。

先来分析一下[] + []结果为多少?是""。明明是两个数组对象相加,为何变成了一个字符串?

一起先来看看下面的例子:

代码语言:javascript
复制
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>HTML5学堂 - H5course</title>
<link rel="stylesheet" href="reset.css">
</head>
<body>
<script>
    // 重写数组里面toString方法
    Array.prototype.toString = function() {
        return "你调用我了";
    }
    console.log([] + []);
</script>
</body>
</html>

结果:你调用我了你调用我了。为啥不是""?因为我们重写了这样一个方法 —— toString。对于网页解析来说,当 + 操作符操作的是对象时,对象会自动调用自己内部toString方法(toString作为一个对象的自带原型方法而存在),toString方法用于将一个值转换为字符串类型的值。

在[] + []的运算过程中,由于使用到了+号,两个数组对象均调用了自己自带的toString()方法,将[]转换成了字符串,一个空字符串加一个空字符串,自然还是一个空的字符串了。

再来分析一下"foo".split(""),这个的意思是将字符串分割成字符串数组,为["f", "o", "o"]。

最后一步来了,[] + [] + "foo".split("")简化完之后是"" + ["f", "o", "o"],这时候 + 左侧是字符串,右侧是数组对象,数组对象依旧会调用自身的原型方法,将数组转换为字符串。

相关知识的支撑,是我们对一个对象的自带原型方法的了解。这道题如果弄明白了,大概也就能够明白,为何能够使用 + '' 或 * 1进行隐式数据类型的转换了。

HTML5真题【2015.12.02】题目

代码语言:javascript
复制
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>HTML5学堂 - H5course</title>
<link rel="stylesheet" href="reset.css">
</head>
<body>
<script>
    console.log(5&3);
</script>
</body>
</html>

关于每日代码练习题的答案和解析,我们会在明日文章当中,发布相关答案以及基本原理。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-12-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 懂点君 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • HTML5真题【2015.12.01】答案解析
  • HTML5真题【2015.12.02】题目
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档