知识卡片

弱类型靠纪律

普通读书笔记卡 · 1496.a

内容

JS 弱类型和过度容错性导致程序质量无法在编译期保障,需靠严格编码规范弥补:函数开头统一声明变量(因无块级作用域,”用到时才声明”是坏建议)、绝不在 if 条件用赋值表达式(避免 if(a=b) 误读为 if(a===b))、switch 从不用 case 穿越。关联:[[好语言可取子集]];发散:越自由的语言环境,越需要人为约定补上编译器不做的检查。

参考来源

- 位置:《JavaScript语言精粹(修订版)》第9章《代码风格 Style》 - 结论依据:原文开篇指出"JavaScript的弱类型和过度的容错性导致程序质量无法在编译时获得保障,所以为了弥补,我们应该按照严格的规范进行编码",随后给出变量统一声明、避免 if 中赋值、禁止 switch 穿越等具体规范,据此推出弱类型语言需要用纪律弥补编译期检查缺失的结论。 - 原始内容:JavaScript的弱类型和过度的容错性导致程序质量无法在编译时获得保障,所以为了弥补,我们应该按照严格的规范进行编码……我绝不在一个if的条件部分使用赋值表达式……我绝不允许switch语句块中的条件穿越到下一个case语句。