]]> ]]>

SpiderMonkey (Firefox 3.5)

Версия реализации SpiderMonkey языка программирования ECMAScript

Версия SpiderMonkey, встроенная в браузер Mozilla Firefox 3.5.

Примеры:

Hello, World! - ECMAScript (106):

JavaScript может применять для вывода сообщений различные команды в зависимости от того, в какой среде он используется:

  • print: при использовании интерпретатора с интерфейсом командной строки выводит сообщение в стандартный поток вывода, при использовании браузера — вызывает диалог печати для текущего документа;
  • document.write: при использовании браузера — записывает текст на страницу;
  • console.log: команда плагина Firebug, предназначенная для вывода отладочных сообщений в консоль плагина;
  • alert: при использовании браузера — создает всплывающее окно информации с этим текстом.
print('Hello, World!');

document.write('Hello, World!');

console.log('Hello, World!');

alert('Hello, World!');

Факториал - ECMAScript (107):

Используется рекурсивное определение факториала. Пример предназначен для запуска из веб-браузера. Команда 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 />");

Числа Фибоначчи - ECMAScript (108):

Используется рекурсивное определение чисел Фибоначчи. Пример предназначен для запуска из веб-браузера.

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 />");

Квадратное уравнение - ECMAScript (135):

Пример выполняется в веб-браузере. Чтобы запустить пример, скопируйте код в файл 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 - ECMAScript (271):

Пример выполняется в веб-браузере, точно так же, как квадратное уравнение. Форма ввода должна выглядеть следующим образом:

<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

]]>

Работа программистам