Синтаксис мови такий же, як в C++.
У JavaScript є два обмеження, що стосуються імен змінних :
JavaScript - регистро-залежна мова. Імена JavaScript і javascript - різні імена!!
Усі ключові слова використовують тільки нижній регістр.
Оператори розділяються крапкою з комою.
Коментарі:
// однорядковий коментар
/*
багаторядковий
коментар
*/
Директива виглядає як рядок: "use strict" — і дослівно перекладається як “використовувати суворий (режим)”. Якщо вона прописана на початку скрипта, він буде виконуватися у “сучасному” режимі.
нестрогому (який іноді називають «брудним»- sloppy mode) режимі синтаксичні правила мови не такі суворі, а коли відбуваються деякі помилки, система ніяк не сповіщає про них користувача. Тобто помилки можуть бути проігноровані, а код, в якому вони допущені, зможе виконуватися далі. Це може призвести до несподіваних результатів виконання коду.
Незабаром ми будемо вивчати функції (такий собі спосіб групування команд). Забігаючи наперед, маймо на увазі, що "use strict" можна писати на початку функції. Таким чином, суворий режим буде використовуватися лише в межах цієї функції. Проте зазвичай люди використовують цей режим для всього скрипта.
У прикладі вмкористовано режим "use strict" але є не оголошена змінна. Інтерпретатор показав помилку.

Змінна оголошена. Помилки немає.

Глобальна змінна - це така змінна, яка оголошена поза тілом якій-небудь функції. Усі глобальні змінні є властивостями глобального об'єкту (у браузері - це window).
Локальні змінні - це такі, які визначені за допомогою ключового слова let усередині тіла якої-небудь функції. Локальні змінні існують тільки усередині тіла функції, в якій вони оголошені, а також доступні усередині її дочірніх функцій. Окрім цього якщо змінну у функції не оголосити, а відразу їй присвоїти значення, то вона теж буде глобальною.Але це тільки справедливо не для суворого режиму. У суворому режимі необхідно обов'язково оголошувати змінні.
Ключове слово const було введено в ES6 (2015).
У новому стандарті для оголошення змінної введені службові слова const і let,можна використати var
Існує 2 основних відмінності var від let/const:
Блокова зона видимості - це зручно. Тому багато років тому const і let були введені в стандарт і зараз є основним способом оголошення змінних.
У випадку з var можемо отримати неявну поведінку для інших розробників. const - незмінні дані, не треба розраховувати на "домовленість" з іншими розробниками, як у випадку з var. let - не доступна зовні блокових зон видимості, що не дозволить її неявно змінити.

Зона видимості let test тільки усередині if, тому зовні вона невизначена.
Оскільки var ігнорує блоки, ми отримали глобальну змінну test.Зона видимості змінних var обмежується або функцією, або, якщо змінна глобальна, то скриптом. Такі змінні доступні за межами блоку.
