incompatibilities (original) (raw)
See additions for incompatibilities caused by additional features.
behavior
=
to a variable declares it on the current scope. Use:=
to modify ones on upper scopes.===
/!==
/==
/!=
each compiles as is.super
represents the direct reference to the parent function rather than being a call itself. Usesuper ...
(justsuper
in Coffee) for full delegation.- Nested comprehensions return flattened results.
- Within non-triple-quoted strings (
''
/""
), indentations after newlines are ignored altogether. do
does not specialcase function literals. Uselet
instead.\
does not introduce a pseudo block. It simply cancels following whitespaces.
keyword
- The roles of
in
andof
have been swapped to keep the JS semantics. - yes/ no / on / off are unreserved. Define your own or just use
true
/false
. switch
-case
-default
replacesswitch
- when -else
.for ever
replaces loop.is not
replaces isnt.void
replaces undefined.~>
(wavy arrow) replaces => (fat arrow).- when is removed. Use
a if b while c
instead of a while c when b. it
/that
/fallthrough
are semi-reserved. They get special meanings depending on context.eval
/arguments
are keywords as per ES5.
grammar
()
is always a call; allowingf ()
, disallowing() ->
....
is prefix as per harmony:spread.and
/or
and spaced.
/?.
close implicit calls.f a .g b or h c
meansf(a).g(b) || h(c)
.- The range syntax ( x..y ) is removed.
- Block comment is
/* */
rather than ### ### . - Heregex is
// //
rather than /// ///. - No implicit call against blocks starting with an implicit object. Use
do
instead: a-b
desugars toaB
instead ofa - b
"#variable" === '' + variable
instead of"#variable" === '#variable'
- in a class constructor, omit
constructor:
.
other
- CLIs are named coco and coke (to coexist with coffee and cake).
- JavaScriptLint support is removed (for being pointless).