作者:Yunen

图0:码农眼中的空字符串,Javascript 的神学体系

图1:码农眼中的空字符串,Javascript 的神学体系

图2:码农眼中的空字符串,Javascript 的神学体系

empty string 和 null

图3:码农眼中的空字符串,Javascript 的神学体系

None 和 “”

很多人可能看不懂王垠为什么会笑 stackoverflow 的高票答案。

C 中判断 empty string 也可以写成高票的那种写法,而不少程序员都会首选这么写。

C 中没有 boolean value 这种说法,empty string 被认为是 0。

if (! myString) { … }

王垠曾经谈过在 《关于语言的思考》中谈过 false 判断的问题。详细内容请阅读,文章的第一部分,Haskell 给我的启发。

一个没有学过 Haskell 的 Scheme 程序员最容易犯的一个错误就是,把除 #f(Scheme 的逻辑“假”) 以外的任何值都作为 #t(Scheme 的逻辑“真”)。很多人认为这是 Scheme 的一个“特性”,可是殊不知这其实是 Scheme 的极少数缺点之一。如果你了解 Lisp 的历史,就会发现在最早的时候,Lisp 把 nil(空链表)这个值作为“假”来使用,而把 nil 意外的其它值都当成“真”。这带来了逻辑思维的混乱。关于语言的思考

在 《LISP In Small Pieces》第九页,作者也提到这个问题。

图4:码农眼中的空字符串,Javascript 的神学体系

LISP In Small Pieces

混淆 boolean value 到极致,应该非 Javascript 莫属。Javascript 中的 0 (false)简直可以复杂如神学。

图5:码农眼中的空字符串,Javascript 的神学体系

神学体系

编程语言不约束你,不代表你可以胡来。这个问题主要是片面追求代码的简短,elegant ? 容易导致逻辑混乱。empty string 就是 empty string, 跟 boolean value 没什么关系。不约束码农胡来的语言,在他们心中地位都很高,比如 Python 和 JavaScript。

余下全文(1/3)

本文最初发表在www.jianshu.com,文章内容属作者个人观点,不代表本站立场。

分享这篇文章:

请关注我们:

发表评论

电子邮件地址不会被公开。 必填项已用*标注