码农眼中的空字符串,Javascript 的神学体系
作者:Yunen
empty string 和 null
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》第九页,作者也提到这个问题。
LISP In Small Pieces
混淆 boolean value 到极致,应该非 Javascript 莫属。Javascript 中的 0 (false)简直可以复杂如神学。
神学体系
编程语言不约束你,不代表你可以胡来。这个问题主要是片面追求代码的简短,elegant ? 容易导致逻辑混乱。empty string 就是 empty string, 跟 boolean value 没什么关系。不约束码农胡来的语言,在他们心中地位都很高,比如 Python 和 JavaScript。
本文文字及图片出自 www.jianshu.com
你也许感兴趣的:
- ECMAScript 2024新特性
- 【外评】JavaScript 变得很好
- 一长串(高级)JavaScript 问题及其解释
- 不存在的浏览器安全漏洞:PDF 中的 JavaScript
- Python 里的所有双下划线(dunder)方法、函数和属性
- 【程序员搞笑图片】JavaScript
- JavaScript 膨胀于 2024 年
- 解码为什么 JS 中的 0.6 + 0.3 = 0.89999999999999 以及如何解决?
- 用 JavaScript 实现的 17 个改变世界的方程式
- 【译文】Dropbox:我们如何将 JavaScript 打包程序的大小减少 33% 的
你对本文的反应是: