魔鬼的细节:一个对Javascript的十年误解
早上不小心瞟到一篇文章,How Logical AND and OR Operators Actually Work in Javascript,才发现虽然我写了超过10年Javascript,却从来不知道这样的真相!
先说说这个误解,两个常用,及其简单的表达式:
private Helper helper = null; public Helper getHelper() { if (helper == null) { synchronized(this) { if (helper == null) { helper = new Helper(); } } } return helper; }现在我们都知道这个工作理论是有问题的,而且我在系统生产运行中发生的疑难问题,推测就是这个问题引发!
我不知道过去那么多年,写的那么多代码,参与设计的系统,还有传递给他人的知识,究竟有多少是建立在类似错误认识上的?在这么多错误基础上构建的系统,却一直在运行,我只能说,它是一个奇迹!