SpiderMonkey
Реализация языка программирования ECMAScriptSpiderMonkey — исторически первая реализация JavaScript, ставшего позднее языком ECMAScript. Она была создана компанией Netscape в 1995 году, позднее стала свободным программным обеспечением и теперь сопровождается и дорабатывается Mozilla Foundation.
SpiderMonkey содержит компилятор и интерпретатор JavaScript вместе с набором служебных программ. Реализация написана на C и предназначена для встраивания в другие приложения. Наиболее распространенным примером ее использования является браузер Mozilla Firefox. Начиная с версии Firefox 3.5, реализация называется TraceMonkey и использует новый метод оптимизации.
Примеры:
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
]]>