早上不小心瞟到一篇文章,
How Logical AND and OR Operators Actually Work in Javascript,才发现虽然我写了超过10年Javascript,却从来不知道这样的真相!
先说说这个误解,两个常用,及其简单的表达式:
expr1 && expr2
expr1 || expr2
我一直以为以为这是一个标准的boolean表达式,计算后的结果肯定是boolean类型而不会是其他,甚至记得有类似Trick把一个表达式转化为布尔类型。但具体规范让我吓一大跳:
引用
(Logical AND) Returns expr1 if it can be converted to false; otherwise, returns expr2. Thus, when used with Boolean values, && returns true if both operands are true; otherwise, returns false.
引用
(Logical OR) Returns expr1 if it can be converted to true; otherwise, returns expr2. Thus, when used with Boolean values, || returns true if either operand is true; if both are false, returns false.
很多情况下,居然返回的是表达式expr1或expr2的
原值!再仔细想想,上述机制其实也一直在用,只是从没仔细考虑过工作原理,例如
config = config || {x:0, y:0}
我并不因此觉得JavaScript本身有任何问题,只是类似魔鬼细节太多,酷壳上这篇文章
深入理解C语言也介绍了许多C语言的陷阱。因此需要我们有更加严谨、谦卑的态度,去做更加深入的学习,例如使用一个语言一段时间后,是否应该去认真的读读语言的规范?
类似误解过去犯过多次,再例如我03年前写的代码中,就有大量的地方在做
DCL,类似这样:
private Helper helper = null;
public Helper getHelper() {
if (helper == null) {
synchronized(this) {
if (helper == null) {
helper = new Helper();
}
}
}
return helper;
}
现在我们都知道这个工作理论是有问题的,而且我在系统生产运行中发生的疑难问题,推测就是这个问题引发!
我不知道过去那么多年,写的那么多代码,参与设计的系统,还有传递给他人的知识,究竟有多少是建立在类似错误认识上的?在这么多错误基础上构建的系统,却一直在运行,我只能说,它是一个奇迹!
分享到:
相关推荐
2015年行测魔鬼训练:判断推理试题(卷)二与答案解析.doc
我们报告了一个没有特定先例的患者。 她表现为痉挛性四轻瘫,伴有左视力下降(4/10)。 自一年以来,一切都在不断发展。 MRI上的脊髓损伤,第二阶段的脑损伤外观影响了白色物质,并且在患者血清中发现了抗水通道...
总之,《初中语文文学讨论名著导读魔鬼秀:恐怖电影的文化史》这本书为我们提供了一个理解恐怖电影的新维度,让我们能够更深入地思考这个文化现象背后的深层意义。通过这种理解,我们不仅能够更好地欣赏恐怖电影作为...
通达信魔鬼操盘手主图指标 源码 通达信.doc 通达信魔鬼操盘手主图指标是基于通达信平台的技术指标,用于股票市场分析和预测。该指标由多个移动平均线和指数移动平均线组成,旨在Capture市场趋势和短期波动。 1. ...
书中还包含了一个“汉字拼音索引”,这对于遇到不熟悉的字根时快速查找拆分方法非常有帮助。另外,附录中也讲解了五笔字型输入法98版的内容、偏旁部首和难解字的打法,以及一些特殊功能键的使用技巧。 五笔字型...
标题"魔鬼作坊VIP模块例子:多进程远程注入dll"表明这可能是一个教程或示例,演示如何在多个进程中实现远程DLL注入。魔鬼作坊可能是一个在线学习平台或技术讨论社区,而VIP模块通常代表其提供的高级或专业内容。 多...
【魔鬼聊天术1】是一本关于社交技巧和恋爱策略的书籍,由阮琦撰写,旨在帮助读者提升与他人,特别是异性之间的沟通能力。书中强调了搭讪作为一种有效的交友手段,并指出现代社会中,人们由于害怕被拒绝,往往选择...
首先,Canvas是一个二维绘图API,通过JavaScript来控制。在这个项目中,开发者可能使用了JavaScript来编写动画逻辑,包括鱼群的移动路径、速度、旋转角度等,使得鲨鱼和魔鬼鱼能够在屏幕上自由游动,模拟真实海洋...
魔鬼作坊注入器还提供了一个链接至“魔鬼作坊论坛.url”,这个在线社区或讨论区允许用户之间进行经验交流、提问和分享技巧。在这样的论坛中,用户可以与专业人士互动,获取实时的支持和反馈,这对于学习和解决实际...
总而言之,魔鬼打字-1.2ZIP是一个针对初学者设计的打字训练工具,通过ZIP格式压缩,便于下载和存储。其内置的各种功能和教学资源旨在帮助用户高效地提高打字技巧,是学习电脑基本操作和提升工作效率的好帮手。
综上所述,“魔鬼作坊学习易语言”不仅仅是一份普通的编程资源,它更是一个全面的学习平台,帮助编程初学者和进阶者在易语言的学习之路上不断前进。在这个平台上,你可以找到系统全面的教程、实用的开发工具和丰富的...
相信在营销管理的你一定需要一款金牌美容师魔鬼训练:抓往女性心灵的弱点学习参考,而金牌美容师魔鬼训练...该文档为金牌美容师魔鬼训练:抓往女性心灵的弱点,是一份很不错的参考资料,具有较高参考价值,感兴趣的...
"魔鬼作坊OD"可能是一个特定的OD解决方案或者一个定制化的服务,专门针对"魔鬼作坊"这个组织或社区的需求。 对象目录服务的核心是目录树结构,这种结构类似文件系统的目录结构,但存储的是网络对象的数据。每个对象...
魔鬼作坊VIP模块V8.5.ec魔鬼作坊VIP模块V8.5.ec魔鬼作坊VIP模块V8.5.ec魔鬼作坊VIP模块V8.5.ec魔鬼作坊VIP模块V8.5.ec魔鬼作坊VIP模块V8.5.ec魔鬼作坊VIP模块V8.5.ec
CE(Cheat Engine)本身是一个开源的调试工具,主要用于游戏作弊和内存调试,而魔鬼作坊进化版则是其一个定制化版本,针对一些特定功能进行了增强。 在这款工具中,你可以进行以下关键操作: 1. **内存扫描**:CE...
总结起来,"CE6.1_魔鬼作坊优化版.rar"是一个经过第三方优化的Cheat Engine版本,具备稳定性和调试能力。压缩包内包含的文件涵盖了软件的执行、帮助文档、配置、升级、注入、调试以及脚本支持等多个方面,为用户提供...
魔鬼作坊模vip,作为一个独特的学习资源,旨在为IT专业人士提供深入、系统化的知识培训。这个压缩包文件中的"魔鬼作坊模块.txt"很可能包含了丰富的课程资料,可能是教程文本或者笔记,帮助我们探索和理解相关主题。 ...
### 经典英文书籍《魔鬼词典》的知识点解析 #### 一、作品背景与作者简介 《魔鬼词典》是一本由美国作家安布罗斯·比尔斯(Ambrose Bierce)...它不仅是英语文学宝库中的瑰宝,也为后来的讽刺作品树立了一个典范。
魔鬼作坊 模块注册机