输入
[false, Boolean(false), [], [[]], "", String(""), 0, Number(0), "0", String("0"), [0]].map(x => null >= x && null <= x && null !== x)
输出
[true, true, true, true, true, true, true, true, true, true, true]
一个会在这么多情况下出现逻辑悖论的语言,是个好语言~
所以再怎么发展 ES6, ES2015, ES2017... 都是徒劳的...
只能希望 wasm 快点推进,革了 JS 的命...
101
enenaaa 2017-05-24 11:32:37 +08:00
@Halomaple 所以 js 作者就是个奇葩啊。所谓空和未定义,对于使用者是一样的,undefined 只是某种认识上的偏执,只用个 null 都能很好地工作。实际上绝大部分语言也是这样做的。
|
102
ahonn 2017-05-24 11:56:23 +08:00
我觉得这东西得客观的看。
因为先入为主的原因,先学了其他编程语言再看 JavaScript 会觉得这些很扯。 但是深入了解完之后,会觉得这种结果也是蛮符合常理的。 这并不能代表 JavaScript 不好,虽然的确有些缺陷,但总体来说还是好的。 至于 null 与 undefined,我觉得是必要的。毕竟 JavaScript 变量声明但不赋值使用的话不会报错。 |
103
so898 2017-05-24 12:00:44 +08:00
昨天被 JS 的 Float 给坑了的路过
|
104
CupTools 2017-05-24 12:00:55 +08:00
|
105
zhuangtongfa 2017-05-24 12:14:15 +08:00
不要先入为主
|
106
darklowly 2017-05-24 17:32:07 +08:00
@Jeter 你说的这个话题其实是动态语言和静态语言的差别。
动态语言,无需编译,直接就跑。静态语言,别说 coredump,就算是发现一个小 bug,也要重新编译。其实这还不是最重要的。 重要的是,动态语言灵活,静态语言死板。并且这种灵活不仅仅是语法上那么简单,在设计和实现功能的时候,动态语言解决很多问题,可以很“直接”,“优雅” 的几行代码搞定,而静态语言,往往要绞尽脑汁,才能“简单”, “优雅”,的实现,所以很多静态语言写出来的代码,大多很繁琐(例如 java ),因为大部分程序员写出来以后,就不会再去化繁为简了。要知道,写代码容易,化简难。 另外一点,就是静态语言因为有编译时检测,所以很多小粗心,编译器可以帮你检测出来。而动态语言没有编译时语法检测,很多小粗心,必须依赖单元测试,我不知道现在国内有完善测试的团队有多少,反正我所接触过的大部分团队,单元测试普及率很低。 所以事情分两面看,有的人看到某个东西的优点,用其优点,有的人看到某个东西的缺点,而讨厌他。而我经常在这两种人之间徘徊。 但是我还是讨厌 js,他相比大部分动态语言而言(他们都有动态语言的优点),除了流行度以外,具体到很多细节上,JS 是很糟糕的。 |
107
royzxq 2017-05-25 01:21:40 +08:00
|
109
h1367500190 2017-06-01 11:01:47 +08:00
@ahonn null 已经为该变量分配内存空间,undefined 则相反
|