moving all js docs under "javascript" (#368)

This commit is contained in:
Peli de Halleux
2017-03-07 10:17:01 -08:00
committed by Abhijith Chatra
parent bc1e5f2522
commit 316d82a8d2
32 changed files with 101 additions and 132 deletions

View File

@ -1,42 +1,69 @@
# JavaScript
Visit the cards below to starting programming JavaScript
with the @boardname@:
We support a "static" subset of TypeScript
(itself a superset of JavaScript):
```codecard
[{
"name": "Calling",
"url": "/js/call"
},{
"name": "Sequencing",
"url": "/js/sequence"
},{
"name": "Variables",
"url": "/js/variables"
},{
"name": "Operators",
"url": "/js/operators"
},{
"name": "Statements",
"url": "/js/statements"
},{
"name": "Functions",
"url": "/js/functions"
},{
"name": "Types",
"url": "/js/types"
},{
"name": "Classes",
"url": "/js/classes"
},{
"name": "FAQ",
"url": "/js/faq"
}
]
```
* [Calling](/javascript/call)
* [Sequencing](/javascript/sequence)
* [Variables](/javascript/variables)
* [Operators](/javascript/operators)
* [Statements](/javascript/statements)
* [Functions](/javascript/functions)
* [Types](/javascript/types)
* [Classes](/javascript/classes)
### See Also
[calling](/js/call), [sequencing](/js/sequence), [variables](/js/variables), [operators](/js/operators), [statements](/js/statements), [functions](/js/functions),
[types](/js/types), [classes](/js/classes), [FAQ](/js/faq)
## Supported language features
* variables with `let` and `const`
* functions with lexical scoping and recursion
* top-level code in the file; hello world really is `console.log("Hello world")`
* `if ... else if ... else` statements
* `while` and `do ... while` loops
* `for(;;)` loops and for ... of
* `break/continue`; also with labeled loops
* `switch` statement (on numbers only)
* conditional operator `? :`; lazy boolean operators
* namespaces (a form of modules)
* all arithmetic operators (including bitwise operators); note that in microcontroller targets
all arithmetic is performed on integers, also when simulating in the browser
* strings (with a few common methods)
* [string templates](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals) (`` `x is ${x}` ``)
* arrow functions `() => ...`
* classes with fields, methods and constructors; `new` keyword
* array literals [1, 2, 3]
* enums
* class inheritance
## Unsupported language features
We generally stay away from the more dynamic parts of JavaScript.
Things you may miss and we may implement:
* exceptions (`throw`, `try ... catch`, `try ... finally`)
* `for ... in` statements
* object literals `{ foo: 1, bar: "two" }`
* method-like properties (get/set accessors)
* `debugger` statement for breakpoints
For JS-only targets we may implement the following:
* regular expressions
* classes implementing interfaces
Things that we are not very likely to implement:
* file-based modules (`import * from ...`, `module.exports` etc); we do support namespaces
* spread operator
* `yield` expression and ``function*``
* `await` expression and `async function`
* `typeof` expression
* tagged templates ``tag `text ${expression} more text` ``; regular templates are supported
* binding with arrays or objects: `let [a, b] = ...; let { x, y } = ...`
* `with` statement
* `eval`
* `delete` statement
* `for ... in` statements
* JSX (HTML as part of JavaScript)

View File

@ -53,6 +53,6 @@ It's a syntax error to have a left parenthesis without the "closing" right paren
basic.clearScreen(
```
### ~button /js/sequence
### ~button /javascript/sequence
NEXT: Sequencing Commands
### ~

View File

@ -13,7 +13,7 @@ basic.showNumber(add(1, 2))
```
### ~ hint
For the @boardname@, you must specify a [type](/js/types) for each function parameter.
For the @boardname@, you must specify a [type](/javascript/types) for each function parameter.
### ~
Functions can refer to variables outside of the function body.
@ -167,6 +167,6 @@ function buildName(firstName: string, ...restOfName: string[]) {
let buildNameFun: (fname: string, ...rest: string[]) => string = buildName;
```
### ~button /js/types
### ~button /javascript/types
NEXT: Types
### ~

View File

@ -18,6 +18,6 @@ This also is true when simulating in the browser.
* comparison operators - [read more](http://devdocs.io/javascript/operators/comparison_operators)
* conditional operator - [read more](http://devdocs.io/javascript/operators/conditional_operator)
### ~button /js/statements
### ~button /javascript/statements
NEXT: Statements
### ~

View File

@ -58,6 +58,6 @@ basic.showNumber(1);
[Read more](http://inimino.org/~inimino/blog/javascript_semicolons) about semicolons in JavaScript.
### ~button /js/variables
### ~button /javascript/variables
NEXT: Variable Declarations
### ~

View File

@ -27,6 +27,6 @@ The following JavaScript statements are supported for the @boardname@:
* labelled statement - [read more](http://devdocs.io/javascript/statements/label)
* `default` statement - [read more](http://devdocs.io/javascript/statements/default)
### ~button /js/functions
### ~button /javascript/functions
NEXT: Functions
### ~

View File

@ -136,6 +136,6 @@ function warnUser(): void {
Declaring variables of type `void` is not useful.
### ~button /js/classes
### ~button /javascript/classes
NEXT: Classes
### ~

View File

@ -128,6 +128,6 @@ const numLivesForCat = 9;
They are like `let` declarations but, as their name implies, their value cannot be changed once they are bound.
In other words, they have the same scoping rules as `let`, but you can't re-assign to them.
### ~button /js/operators
### ~button /javascript/operators
NEXT: Operators
### ~

View File

@ -1,58 +0,0 @@
# Frequently asked questions
# What is the language supported for the @boardname@?
For the @boardname@, we support a "static" subset of TypeScript (itself a superset of JavaScript):
## Supported language features
* variables with `let` and `const`
* functions with lexical scoping and recursion
* top-level code in the file; hello world really is `console.log("Hello world")`
* `if ... else if ... else` statements
* `while` and `do ... while` loops
* `for(;;)` loops and for ... of
* `break/continue`; also with labeled loops
* `switch` statement (on numbers only)
* conditional operator `? :`; lazy boolean operators
* namespaces (a form of modules)
* all arithmetic operators (including bitwise operators); note that in microcontroller targets
all arithmetic is performed on integers, also when simulating in the browser
* strings (with a few common methods)
* [string templates](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals) (`` `x is ${x}` ``)
* arrow functions `() => ...`
* classes with fields, methods and constructors; `new` keyword
* array literals `[1, 2, 3]`
* enums
* class inheritance
## Unsupported language features
We generally stay away from the more dynamic parts of JavaScript.
Things you may miss and we may implement:
* exceptions (`throw`, `try ... catch`, `try ... finally`)
* `for ... in` statements
* object literals `{ foo: 1, bar: "two" }`
* method-like properties (get/set accessors)
* `debugger` statement for breakpoints
For JS-only targets we may implement the following:
* regular expressions
* classes implementing interfaces
Things that we are not very likely to implement:
* file-based modules (`import * from ...`, `module.exports` etc); we do support namespaces
* spread operator
* `yield` expression and ``function*``
* `await` expression and `async function`
* `typeof` expression
* tagged templates ``tag `text ${expression} more text` ``; regular templates are supported
* binding with arrays or objects: `let [a, b] = ...; let { x, y } = ...`
* `with` statement
* `eval`
* `delete` statement
* `for ... in` statements
* JSX (HTML as part of JavaScript)