-
Notifications
You must be signed in to change notification settings - Fork 8
2.16 JavaScript specials
This chapter briefly recaps the features of JavaScript that we’ve learned by now, paying special attention to subtle moments.
Statements are delimited with a semicolon:
alert('Hello'); alert('World');
Usually, a line-break is also treated as a delimiter, so that would also work:
alert('Hello')
alert('World')
That’s called “automatic semicolon insertion”. Sometimes it doesn’t work, for instance:
alert("There will be an error after this message")
[1, 2].forEach(alert)
Most codestyle guides agree that we should put a semicolon after each statement.
Semicolons are not required after code blocks {...}
and syntax constructs with them like loops:
function f() {
// no semicolon needed after function declaration
}
for(;;) {
// no semicolon needed after the loop
}
... But even if we can put an “extra” semicolon somewhere, that’s not an error. It will be ignored.
More in: Code structure.
To fully enable all features of modern JavaScript, we should start scripts with "use strict"
.
'use strict';
...
The directive must be at the top of a script or at the beginning of a function.
Without "use strict"
, everything still works, but some features behave in the old-fashion, “compatible” way. We’d generally prefer the modern behavior.
Some modern features of the language (like classes that we’ll study in the future) enable strict mode implicitly.
More in: The modern mode, "use strict".
Can be declared using:
-
let
-
const
(constant, can’t be changed) -
var
(old-style, will see later)
A variable name can include:
-
Letters and digits, but the first character may not be a digit.
-
Characters
$
and_
are normal, on par with letters. -
Non-Latin alphabets and hieroglyphs are also allowed, but commonly not used.
Variables are dynamically typed. They can store any value:
let x = 5;
x = "John";
There are 7 data types:
-
number
for both floating-point and integer numbers, -
string
for strings, -
boolean
for logical values:true/false
, -
null
– a type with a single valuenull
, meaning “empty” or “does not exist”, -
undefined
– a type with a single valueundefined
, meaning “not assigned”, -
object
andsymbol
– for complex data structures and unique identifiers, we haven’t learnt them yet.
The typeof
operator returns the type for a value, with two exceptions:
typeof null == "object" // error in the language
typeof function(){} == "function" // functions are treated specially
More in: Variables and Data types.
We’re using a browser as a working environment, so basic UI functions will be:
Ask a question, and return either what the visitor entered or null
if he pressed “cancel”.
Ask a question
and suggest to choose between Ok and Cancel. The choice is returned as true/false
.
Output a message
.
All these functions are modal, they pause the code execution and prevent the visitor from interacting with the page until he answers.
For instance:
let userName = prompt("Your name?", "Alice");
let isTeaWanted = confirm("Do you want some tea?");
alert( "Visitor: " + userName ); // Alice
alert( "Tea wanted: " + isTeaWanted ); // true
More in: Interaction: alert, prompt, confirm.
JavaScript supports the following operators:
Arithmetical
Regular: * + - /
, also %
for the remainder and **
for power of a number.
Binary plus +
concatenates strings. And if any of the operands is a string, the other one is converted to string too:
alert( '1' + 2 ); // '12', string
alert( 1 + '2' ); // '12', string