- 主题:又发现了 js 一个很蠢的地方
来,解释一下 (!!"")
【 在 eGust (十年) 的大作中提到: 】
: 凭啥 {} 是 truthy 就是错误的?
: js 里除了 primitive types 全部都是 object,凭啥 object 是 falsy?因为你懂 py 所以只有 py 的设计是正确的,其它全都是错的?
: 我们 ruby 只有 nil 和 false 是 falsy 值,是不是也错了?从 ruby 看 py 才不严谨
: ...................
--
FROM 110.85.22.*
其实真心别纠结这些细枝末节, 写代码的时候注意下根本就遇不到这些问题..
【 在 hgoldfish (老鱼) 的大作中提到: 】
: 来,解释一下 (!!"")
--
FROM 101.85.232.*
返回false吧
【 在 hgoldfish 的大作中提到: 】
: 来,解释一下 (!!"")
:
--
FROM 114.249.17.*
直觉对象是true,还好
【 在 hgoldfish 的大作中提到: 】
: !!(new Map())
: 返回了 true
--
FROM 114.249.17.*
需要解释啥,为啥字符串是 primitive type 么?
我已经说了 js 里非 primitive 都是 object 类型,而作为 object 没道理是 falsy
const foo = {};
foo.__proto__ = Set.prototype;
凭啥第一行的时候是 truthy,第二行看起来是增加了一个值,反倒 falsy 了?
在这个原则下,由于 new Boolean(false) 是 object,所以一样是 truthy,js 在这方面的逻辑是自洽的。
你对 js 这门语言的认知跟小白没有两样。不肯动脑也就罢了,非把别的语言硬往上套
【 在 hgoldfish (老鱼) 的大作中提到: 】
: 来,解释一下 (!!"")
--
修改:eGust FROM 115.188.159.*
FROM 115.188.159.*
!附在任何对象上都会转化为bool,有什么奇怪的
--
FROM 113.106.190.*