scope can be incidentally overridden: // ... function baz() { var foo = "bar" console.log(`foo = ${foo}`) } // ... } In CoffeeScript there is no way to tell if the scope of a variable is limited to a block or not without looking outside the block. Development and distribution The CoffeeScript compiler has been self-hosting since version 0.5 and is available as a Node.js utility; however, the core compiler does not rely on Node.js and can be run in any JavaScript environment. One alternative to the Node.js utility is the Coffee Maven Plugin, a plugin for the Apache Maven build system. The plugin uses the Rhino JavaScript engine written in Java. The official site at CoffeeScript.org has a "Try CoffeeScript" button in the menu bar; clicking it opens a modal window in which users can enter CoffeeScript, see the JavaScript output, and run it directly in the browser. The js2coffee site provides bi-directional translation. Latest additions Source maps allow users to debug their CoffeeScript code directly, supporting CoffeeScript tracebacks on run time errors. CoffeeScript supports a form of Literate Programming, using the .coffee.md or .litcoffee file extension. This allows CoffeeScript source code to be written in Markdown. The compiler will treat any indented blocks (Markdown's way of indicating source code) as code, and ignore the rest as comments. Extensions Iced CoffeeScript is a superset of CoffeeScript which adds two new keywords: await and defer. These additions simplify asynchronous control flow, making the code look more like a procedural programming language, eliminating the call-back chain. It can be used on the server side and in the browser. Adoption On September 13, 2012, Dropbox announced that their browser-side code base had been rewritten from JavaScript to CoffeeScript, however it was migrated to TypeScript in 2017. GitHub's internal style guide once said "write new JS in CoffeeScript", though it no longer does, and their Atom text editor was also written in the language. Pixel Game Maker MV makes uses of CoffeeScript as part of its game development environment. See also Haxe Nim (programming language) Amber Smalltalk Clojure Dart (programming language) Kotlin (programming language) LiveScript Opa (programming language) Elm (programming language) TypeScript PureScript References Further reading External links Dynamic programming languages Programming languages created in 2009 JavaScript programming language family Prototype-based programming languages Software using the MIT license Source-to-source compilers High-level programming languages 2009 software Free software projects