js题集28
2021-06-08 19:03
标签:转换 ebe == console 逻辑 一个 stack topic flow //链接:http://cnodejs.org/topic/580743a627a1d99178a98fc5 1.求输出: ([]+![])[+!![]] //a 2.求输出//评论里的问题 同计算了 ((-{})+[])[+![]]//N 解析: //虽然平时没看到有这么用的 代码里这么写的要么是疯子 要么是奇葩。。 看题目1 涉及到类型转换 空数组 转换成 数字 对应的是 0 空数组 转换成 布尔 对应的是 true 。。。。 任意值转换成数字的 隐式方法 -somevalue +somevalue(not somevalue+somevalue) 其中 不可parseInt或者paresFloat的值会成为NaN 所以题目1 转换 []+![] 首先执行![] 转换成布尔值 false []+布尔 统一变成 [].toString()+"false"; []对应字符串是“” 所以变成false [+!![]] [] 对应的布尔值是 true !是逻辑符号 非 所以![] ,[]转换成布尔值true,![] 就是false。 !![]就是true。 +true 转换成数字 true对应数字1 题目一最后执行:("false")[1] 对应是输出a。 然后就会很纠结一个问题 [] 是神马情况 [] 对应 true ?? [] 对应 0 wtf.. var arr = []; //于是提问的人 又抛了一个问题。。。(后来发现是stackoverflow上的。。) console.log(‘Array:‘, arr); if (arr) console.log("It‘s true!"); if (arr == false) console.log("It‘s false!"); if (arr && arr == false) console.log("...what??"); 在进行转换过程 比如 目标类型是布尔 会进行Boolean(source); 目标类型是 数字 会进行Number(source); object 类型会变成true 至于数字 建议阅读ES 规范 Number([]); Number([1]); Numeber([1,2]); Number({});传入object js题集28 标签:转换 ebe == console 逻辑 一个 stack topic flow 原文地址:http://www.cnblogs.com/tong24/p/7305876.html
上一篇:js题集24