ECMAScript
- Дата создания:
- 1997
- Создан под влиянием:
- Повлиял на:
- Парадигма:
- Типизация:
- Принятые расширения файлов:
- .es, .js
- Диалекты:
- Реализации и версии (свернуть все | развернуть все):
ECMAScript — стандарт для скриптовых языков программирования, реализуемый и используемый в виде одного из диалектов.
ECMAScript был создан как стандартизированная версия JavaScript, и хотя последний появился в 1996 году, первый стандарт ECMAScript, давший ему имя и определивший его как язык, был опубликован только в 1997 году. Стандарт ECMAScript разрабатывается Ecma International и приведен в нескольких изданиях спецификации ECMA-262, первое — в июне 1997 года, последнее (на сентябрь 2011) — в декабре 2009.
ECMAScript реализован в нескольких диалектах, основными из которых являются JavaScript и ActionScript. JavaScript является наиболее популярным скриптовым языком для клиентской стороны веб-приложений, поэтому обычно интегрируется в веб-браузер, хотя существует ряд интерпретаторов, встроенных в инструменты, не предназначенные для работы с веб. ActionScript — язык программирования, используемый преимущественно в Adobe Flash.
ECMAScript — относительно новый язык, поэтому содержит черты многих более ранних языков.
Элементы синтаксиса:
Комментарий до конца строки | // |
---|---|
Комментарии, которые не могут быть вложенными | /* ... */ |
Регистрозависимость | да |
Регулярное выражение идентификатора переменной | [_a-zA-Z$][_a-zA-Z0-9$]* |
Присваивание значения переменной | varname = value |
Объявление переменной | var varname |
Группировка выражений | ( ... ) |
Блок | { ... } |
Равенство | == или === |
Неравенство | != или !== |
Сравнение | < > <= >= |
Определение функции | function f(para1, para2) { ... } |
Вызов функции | f(a,b,...) |
Вызов функции без параметров | f() |
Последовательность | , или ; или конец строки |
Если - то | if (condition) trueBlock |
Если - то - иначе | if (condition) trueBlock else falseBlock |
Цикл с предусловием | while (condition) loopBody |
Цикл с постусловием | do loopBody while (!c) |
Цикл for - next для диапазона целых чисел с инкрементом на 1 | for (i = 1; i <= 10; i++) loopBody |
Цикл for - next для диапазона целых чисел с декрементом на 1 | for (i = 1; i <= 10; i--) loopBody |
Примеры:
Hello, World!:
Пример для версий SpiderMonkey (Firefox 3.5)JavaScript может применять для вывода сообщений различные команды в зависимости от того, в какой среде он используется:
-
print
: при использовании интерпретатора с интерфейсом командной строки выводит сообщение в стандартный поток вывода, при использовании браузера — вызывает диалог печати для текущего документа; -
document.write
: при использовании браузера — записывает текст на страницу; -
console.log
: команда плагина Firebug, предназначенная для вывода отладочных сообщений в консоль плагина; -
alert
: при использовании браузера — создает всплывающее окно информации с этим текстом.
print('Hello, World!');
document.write('Hello, World!');
console.log('Hello, World!');
alert('Hello, World!');
Факториал:
Пример для версий SpiderMonkey (Firefox 3.5)Используется рекурсивное определение факториала. Пример предназначен для запуска из веб-браузера. Команда document.clear
очищает текущую веб-страницу.
function factorial(n)
{ if (n == 0)
return 1;
else
return n * factorial(n-1);
}
var i;
document.clear();
for (i = 0; i <= 16; i++)
document.write(i + "! = " + factorial(i) + "<br />");
Числа Фибоначчи:
Пример для версий SpiderMonkey (Firefox 3.5)Используется рекурсивное определение чисел Фибоначчи. Пример предназначен для запуска из веб-браузера.
function fibonacci(n)
{ if (n<3)
return 1;
else
return fibonacci(n-1) + fibonacci(n-2);
}
var i;
document.clear();
for (i = 1; i <= 16; i++)
document.write(fibonacci(i) + ", ");
document.write("...<br />");
Квадратное уравнение:
Пример для версий SpiderMonkey (Firefox 3.5)Пример выполняется в веб-браузере. Чтобы запустить пример, скопируйте код в файл quadratic.js
и создайте файл HTML, находящийся в том же каталоге, содержащий следующий текст:
<head>
<script type="text/javascript" src="quadratic.js"></script>
</head>
<body>
<form name="quadratic">
<input type="number" required="required" name="A">
<input type="number" required="required" name="B">
<input type="number" required="required" name="C">
<input type="button" value="Solve" onClick="solve()">
</form>
<p id="output">
</p>
</body>
Это создаст веб-страницу с тремя полями ввода и кнопкой. При нажатии на кнопку будет решено уравнение с введенными коэффициентами, и корни будут напечатаны под полями ввода.
В JavaScript нет типа данных для работы с комплексными числами, поэтому вычисления производятся в дробных числах и выполняется отдельная проверка на знак дискриминанта. Реализация позволяет решать квадратные уравнения не только с целыми, но и с дробными коэффициентами.
function print(real, imag)
{ if (Math.abs(imag)<1E-6)
return real;
else
return '('+real+','+imag+')';
}
function solve()
{ A = document.quadratic.A.value;
if (Math.abs(A)<1E-3)
{ document.getElementById('output').innerHTML = 'Not a quadratic equation.';
return;
}
B = document.quadratic.B.value;
C = document.quadratic.C.value;
A = 2*A;
D = B*B-2*A*C;
if (Math.abs(D)<1E-3)
{ document.getElementById('output').innerHTML = 'x = '+(-B/A);
return;
}
if (D>0)
document.getElementById('output').innerHTML = 'x1 = '+print((-B+Math.sqrt(D))/A, 0)+'<br />x2 = '+print((-B-Math.sqrt(D))/A, 0);
else
document.getElementById('output').innerHTML = 'x1 = '+print(-B/A,Math.sqrt(-D)/A)+'<br />x2 = '+print(-B/A,-Math.sqrt(-D)/A);
}
CamelCase:
Пример для версий SpiderMonkey (Firefox 3.5)Пример выполняется в веб-браузере, точно так же, как квадратное уравнение. Форма ввода должна выглядеть следующим образом:
<form name="CamelCase">
<input type="text" required="required" name="txt">
<input type="button" value="Convert to CamelCase" onClick="convert()">
</form>
Сам код можно было бы записать в одну строчку, но он разбит на несколько частей для улучшения читабельности. Первая строка получает строку для обработки; вторая переводит ее в нижний регистр и заменяет все не-буквы пробелами. Третья строка переводит в верхний регистр первый символ каждого слова; наконец, четвертая строка убирает все пробелы. В JavaScript активно используются регулярные выражения, поэтому все действия производятся с их помощью.
function convert() {
txt = document.CamelCase.txt.value;
txt = txt.toLowerCase().replace(/[^a-z ]+/g, ' ');
txt = txt.replace(/^(.)|\s(.)/g, function($1) { return $1.toUpperCase(); });
txt = txt.replace(/[^a-zA-Z]+/g, '');
document.getElementById('output').innerHTML = txt;
}
Комментарии
]]>blog comments powered by Disqus
]]>