Ответ 1
(В соответствии с запросом мои комментарии повторно отправлены в качестве ответа:)
"Очевидная" ошибка копирования/вставки в примере, который вы показываете, - это скопировать первую строку:
var s = (a === b)
... который, конечно, является правильным кодом сам по себе, но явно не делает то же самое, что и три строки вместе. Можно было бы надеяться, что люди будут смотреть на окружающий код, прежде чем копировать одну строку, но вы никогда не знаете.
То, что, по моему мнению, г-н Крокфорд пытается сделать, состоит в том, что если вы намеренно разделите многострочное выражение таким образом, чтобы отдельные строки не были действительным кодом сами по себе, то, если вы случайно скопировали только одну строку выражение, скорее всего, приведет к синтаксической ошибке при вставке в другое место. Это хорошо, потому что синтаксические ошибки сообщаются браузером и/или JSLint/JSHint, и поэтому их легче найти, чем более тонкие ошибки, созданные, если вы копируете/вставляете строку, которая действительна сама по себе. Поэтому, если вы "всегда ломаете линии после операторов", как предлагает Крокфорд:
var s = (a === b) ?
'one' :
'two';
... тогда единственная строка тройки, которая является правильным кодом сама по себе (третья), на самом деле не выглядит полной, и поэтому было бы легче заметить ошибку, если она вставлена сама по себе, потому что она настолько очевидна ничего не делает сам по себе - и он вряд ли будет скопирован сам по себе по той же причине.
(Сказав это, я не подчеркиваю о тройном операторе в своем собственном коде, и я думаю, что это выглядит некрасиво. Я наложил короткое тройное выражение на одну строку, более длинную на две строки с разрывом строки после среднего операнда и: выстроились под?, или действительно длинный на трех строках, как ваш.)