BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java-script / #6同步于 2016/9/8
该镜像源已超过 30 天没有更新,可能在源站已被删除。
JavaScript机器人发帖

恭喜开板。顺便黑一下JavaScript

nuanyangyang
2016/9/8镜像同步18 回复
请解释下面表达式为什么是相应的值? [] + [] # "" 空字符串。注意:不是空数组。 [] + {} # "[object Object]" 字符串,内容是[object Object] +[] # 0 零。注:+是“正”号,比如+1, +2 +{} # NaN Array(4).toString() # ",,," 由三个逗号组成的字符串 Array(4).join("foo").toString() # "foofoofoo" Array(4).join("foo"+1).toString() # "foo1foo1foo1" Array(9).join("foo"-1) + "Batman!" # "NaNNaNNaNNaNNaNNaNNaNNaNBatman!" 参考: 附件(1.8MB) _na_na_na_na_na_na_na_na_na_na_na..._BATMAN!-EtoMN_xi-AM.mkv 来源:https://www.destroyallsoftware.com/talks/wat
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
zwl4488机器人#1 · 2016/9/8
暖神踢馆第一帖
LeeSir机器人#2 · 2016/9/8
干特么的暖神。。。黑我大js[ema1]
nuanyangyang机器人#3 · 2016/9/8
【 在 zwl4488 的大作中提到: 】 : 暖神踢馆第一帖 版主大人来贴个标准答案吧
assano机器人#4 · 2016/9/8
【 在 nuanyangyang 的大作中提到: 】 : : 版主大人来贴个标准答案吧 暖神居然换头像了
haohaovpal机器人#5 · 2016/9/8
暖羊羊不要换头像!!!
ytyr2008机器人#6 · 2016/9/8
小菜鸟试着答一答后面四个,巩固一下刚学的知识点~[ema3] Array调用toString()方法时,会先调用数组中每一项元素的toString()方法,然后调用join()方法进行拼接。如果某一项的值是null或者undefined,则其toString方法返回空字符串。join的默认参数是',',如果传的是非字符串,则会先将其转化为字符串(猜测是String()转的,因为传null时转化为字符串‘null',如果是toString()的话,那么传null会出错)。 Array(4).toString() # 四个元素均为undefined,返回四个空字符串,再用‘,'拼接,因此',,,' Array(4).join("foo").toString() # "foofoofoo" 调用join时,也会先调用各自元素的toString,再进行字符串拼接。Array(4).join("foo")返回字符串’foofoofoo'。字符串再调用toString()则返回与自身相同的一个副本。 Array(4).join("foo"+1).toString() # "foo1foo1foo1"大致同上一个,不过是在为join传参时有所改变,这里的+是字符串拼接,因此传的参数是'join1'。 Array(9).join("foo"-1) + "Batman!" # "NaNNaNNaNNaNNaNNaNNaNNaNBatman!" join传参时,传的参数是‘foo'-1。'foo'-1会先将'foo'转化为number类型,转化结果为NaN。NaN与任何数进行减法运算的结果都是NaN。因此join的实际参数是’NaN‘。 有错误欢迎指正~
PiEgg机器人#7 · 2016/9/8
6楼给出了后四个。我给出前四个。 首先相加的步骤,是将两个操作数都转为原始值。先转换左边再转换右边的。 如果二者任一为字符串那么另外一个也转成字符串,然后返回两个字符串拼接的结果。 否则将它们转成数字类型,返回它们的和。 1.[] + [] = "" 这是两个空数组的相加,左边的数组首先转成原始值->[]-toString()->"",右边也一样,于是就变成"" + "" ="" 2.[] + {} = "[object object]".左边的数组转成了->""这样的字符串,右边由于是个空对象,所以也需要转成字符串,于是转成了"[object object]",于是就变成了 "" + "[object object]" = "[object object]" 3.+[] = 0 此处的+号是一元操作符,目的是将后面的操作数转成数字。也即Number([])->Number([].toString)->Number("")=0 4.+{} = NaN 同理,由于空对象无法转成数字,所以输出NaN。 也即Number({})->Number({}.toString)->Number("[Object Object]")=NaN
cocoyimasa机器人#8 · 2016/9/8
暖神果然来了!
redstarbury机器人#9 · 2016/9/8
顶顶顶顶顶顶一个