2015-03-04 7 views
0

Я изучаю CoffeeScript и использую js2.coffee для преобразования моего файла Javascript в CoffeeScript. Несколько строк, это предупреждает меня, чтоПочему CoffeeScript не поддерживает `==`?

Operator '==' is not supported in CoffeeScript, use '===' instead. 

В чем причина этого? Почему CoffeeScript не поддерживает ==?

+0

["Поскольку оператор == часто вызывает нежелательное принуждение, является непереходным и имеет другое значение, чем на других языках, ..."] (http://coffeescript.org/#operators). –

ответ

1

По той же причине, что и большинство Linters предупреждают вас об этом.

Это странно реализованный оператор с удивительными побочными эффектами.

"\n\t" == false 
// => true 

Есть много вещей, написанных на эту тему, но в первую очередь оператор == из списка Дугласа Крокфорда по things to avoid.

+0

Итак, CoffeeScript сделал это еще дальше, и *** навязывает ***, что это запрещено? – dayuloli

+0

Да. CoffeeScript имеет только '==='. – meagar

1

Собственно CoffeeScript компилирует == в JavaScript-х ===!= к !==, как вы можете видеть в documentation).

Итак, нижняя строка да, она не поддерживает его. Я думаю, это потому, что == делает преобразование типа перед проверкой равенства , если операнды имеют разный тип. Это преобразование является практикой, которая была опровергнута из-за ее неожиданных результатов и ее производительность.

Существует много дискуссий онлайн по вопросу == vs ===. MDN docs помог мне лучше понять проблему.