Формальний опис синтаксису й роботи JS називається ECMAScript. На ньому, до речі, заснований не тільки JS, а й декілька інших мов, наприклад ActionScript (Flash).
Наприклад, наступний скрипт написаний на ECMAScript, а тому працюватиме і в JS, і ActionScript:
var max=5
try {
for(var i=0; i<Number.POSITIVE_INFINITY; i++) {
if (i>max) throw new Error("failed to reach the stars")
}
} catch(e){}
Програми на мові JS зазвичай складаються з програмних блоків або одиничних операторів. Програмні блоки - це набір операторів усередині фігурних дужок "{" і "}". На відміну від мов C та Java, у JS означення змінної всередині блоку не задає цій змінній окрему область видимості.
Кожен оператор закінчується символом ";" (крапка з комою). Якщо у кінці рядка символ ";" відсутній, то у більшості випадків він доставляється автоматично інтерпретатором. Для того, щоб вказати інтерпретатору, що наступний рядок є продовженням поточного, використовують символ "\":
var s = "довгий \
вираз"
Однорядкові коментарі розпочинаються парою символів //. Багаторядкові коментарі розпочинаються символами /* та завершуються символами */.
Змінні
Змінні створюються або за допомогою оператора var, або при безпосередньому присвоєнні значень за допомогою оператора присвоєння (=) .
Синтаксис оператора var такий:
var VariableName [=value|expression];
Оператор var створює нову змінну з ім'ям VariableName. Область дії цієї змінної буде або локальною, або глобальною у залежності від того, де створена змінна. При створенні змінної оператор var можна пропустити, однак у цьому випадку в правій частині оператора присвоювання має вказуватися значення.
Наявність оператора var може впливати на область дії змінної. У наступному прикладі змінна х у функції fun оголошена як локальна, тому глобальна змінна x не змінюватиметься:
var x = 1;
function fun(a) {
var x = a;
}
fun(10);
alert(x); //x==1
До речі, глобальних змінних в JS насправді немає. Те, що називають "глобальними" – це властивості спеціального об'єкта window. Наприклад , в останньому прикладі alert(window.x) теж видало б 1.
Всі "глобальні" змінні прив'язані до свого вікна. Різні вікна та фрейми мають різні "глобальні" змінні. Глобальних змінних в JS рекомендують уникати, особливо при написанні бібліотек та компонент, які можуть використовуватися в різних аплікаціях.