知识卡片

分号不要托管

普通读书笔记卡 · 1498.c

内容

JS 会自动插入分号”修复”缺损程序,但修复未必符合本意,且无警告。典型陷阱是 return:若返回值起始部分不与 return 同行,会在 return 后补上分号,把”返回带status对象”悄悄变成”返回undefined”。把左花括号放在 return 行尾(K&R风格)即可避免。发散:语法边界写清楚、不依赖自动补全,是减少解释器猜测和团队争议的低成本习惯。

参考来源

- 位置:《JavaScript语言精粹(修订版)》附录A《毒瘤 Awful Parts》"自动插入分号"一节 - 结论依据:原文给出 return 语句换行导致自动插入分号、把返回对象变成返回 undefined 的具体例子,并说明"自动插入分号导致程序被误解,却没有任何警告提醒",同时给出把左花括号放在上一行尾部即可规避的做法,据此推出自动分号插入不可依赖的结论。 - 原始内容:JavaScript有一个自动修复机制,它试图通过自动插入分号来修正有缺损的程序。但是,千万不要指望它,它可能会掩盖更为严重的错误……自动插入分号让它变成了返回undefined。自动插入分号导致程序被误解,却没有任何警告提醒。