bookmate game
ru

Дэвид Флэнаган

  • yanpriohas quoted2 years ago
    Ключевое слово "this" ссылается на объект,

    // в котором определен метод: в данном случае на массив points,

    points.dist = function() { // Метод вычисления расстояния между точками

    var р1 = this[0]; // Первый элемент массива, относительно которого вызван метод

    var р2 = this[1]; // Второй элемент объекта "this"

    var а = р2.х-р1.х; // Разность координат X

    var b = р2.у-р1.у; // Разность координат Y

    return Math.sqrt(a*a + // Теорема Пифагора

    b*b); // Math.sqrtO вычисляет корень квадратный

    };

    points.dist() // => 1.414: расстояние между 2-мя точками
  • yanpriohas quoted2 years ago
    function factorial(n) { // Функция, вычисляющая факториал

    var product = 1; // Начать с произведения, равного 1

    while(n > 1) { // Повторять инструкции в {}, пока выраж. в () истинно

    product *= n; // Сокращенная форма выражения product = product * n;

    n--; // Сокращенная форма выражения n = п - 1

    } // Конец цикла

    return product; // Вернуть произведение

    }

    factorial(4) // => 24: 1*4*3*2
  • yanpriohas quoted2 years ago
    function factorial2(n) { // Другая версия, использующая другой цикл

    var і, product = 1; // Начать с 1

    for(i=2; і <= n; i++) // і автоматически увеличивается с 2 до n

    product *= i; // Выполнять в каждом цикле. {} можно опустить,

    // если тело цикла состоит из 1 инструкции

    return product; // Вернуть факториал

    }

    factorial2(5) // => 120: 1*2*3*4*5
  • yanpriohas quoted2 years ago
    function calculate() {

    // Отыскать элементы ввода и вывода в документе

    var amount = document.getElementById("amount");

    var apr = document.getElementByld("apr”);

    var years = document.getElementById("years");
  • yanpriohas quoted2 years ago
    // Залить обл. под кривой

    g.fillText("Total Equity", 20,35); // Надпись зеленым цветом

    // Повторить цикл, как выше, но нарисовать график остатка по кредиту

    var bal = principal;

    g.beginPath();

    g.moveTo(paymentToX(O),amountToY(bal));

    for(var p = 1; p <= payments; p++) {

    var thisMonthsInterest = bal*interest;

    bal -= (monthly - thisMonthsInterest) //Остаток от погаш. по кредиту

    g.lineTo(paymentToX(p),amountToY(bal)); // Линию до этой точки

    }

    g.LineWidth = 3; //Жирная линия

    g.stroke; //Нарисовать кривую графика

    g.fillStle="black"; //Черный цвет для текста

    g.fillText("Loan Balabce", 20, 50); //Элемент легенды

    //Нарисовать отметки лет на оси Х

    g.textAling="center"; //Текст меток по центру

    var y = amounToY(0); //Координата Y на оси X

    for (var year=1;year*12 <= payments; year++) { //Для каждого года

    var x=paymentToX(year*12); //Вычислить позицию метки

    g.fillRect(x-0.5, y-3, 1, 3); //Нарисовать метку

    if (year == 1) g.fillText("Year", x, y-5); // Подписать ось

    if (year % 5 == 0 && year*12 !== payments) // Числа через каждые 5 лет

    g.fillText(String(year), x, y-5);

    }

    //Суммы платежей у правой границы

    g.textAling="right"; //Текст по правому краю

    g.textBaseLine="middle"; //Центрировать по вертикали

    var ticks = [monthly*payments, principal]; //Вывести две суммы

    var rightEdge = paymentToX(payments); //Координата X на оси Y

    for (var i = 0; i < ticks.Length; i++) { //Для каждой из 2 сумм

    var y = amountToY(ticks[i]); //Определить координату Y

    g.fillRect(rightEdge - 3, y - 0.5, 3, 1); //Нарисовать метку

    g.fillText(String(ticks[i].toFixed(0)), //И вывести рядом сумму.

    rightEdge-5, y);

    }

    }
  • yanpriohas quoted2 years ago
    Литерал - это значение, указанное непосредственно в тексте программы
  • yanpriohas quoted2 years ago
    Значения null и undefined являются единственными в языке JavaScript, которые не имеют методов.
  • yanpriohas quoted2 years ago
    Значение «не число» в JavaScript обладает одной необычной особенностью: операция проверки на равенство всегда возвращает отрицательный результат, даже если сравнить его с самим собой.
  • yanpriohas quoted2 years ago
    // Получить ввод пользователя из элементов ввода. Предполагается, что все данные

    // являются корректными. Преобразовать процентную ставку из процентов

    // в десятичное число и преобразовать годовую ставку в месячную ставку.

    // Преобразовать период платежей в годах в количество месячных платежей.

    var principal = parseFloat(amount.value);

    var interest = parseFloat(apr.value) / 100 / 12;

    var payments = parseFloat(years.value) * 12;

    // Теперь вычислить сумму ежемесячного платежа.

    var х = Math.pow(1 + interest, payments); // Math.pow() вычисляет степень

    var monthly = (principal * x * interest)/(x-1);

    // Если результатом является конечное число, следовательно, пользователь

    // указал корректные данные и результаты можно отобразить

    if (isFinite(monthly)) {

    // Заполнить поля вывода, округлив результаты до 2 десятичных знаков

    payment.innerHTML = monthly.toFixed(2);

    total.innerHTML = (monthly * payments).toFixed(2);

    totalinterest.innerHTML = ((monthly*payments)-principal).toFixed(2);

    // Сохранить ввод пользователя, чтобы можно было восстановить данные

    // при следующем открытии страницы

    save(amount.value, apr.value, years.value, zipcode.value);

    // Реклама: отыскать и отобразить ссылки на сайты местных

    // кредитных учреждений, но игнорировать сетевые ошибки

    try { // Перехватывать все ошибки, возникающие в этих фигурных скобках

    getLenders(amount.value, apr.value, years.value, zipcode.value);

    }

    catch(e) { /* И игнорировать эти ошибки */ }

    // В заключение вывести график изменения остатка по кредиту, а также

    // графики сумм, выплачиваемых в погашение кредита и по процентам

    chart(principal, interest, monthly, payments);

    }

    else {

    // Результат не является числом или имеет бесконечное значение,

    // что означает, что были получены неполные или некорректные данные.

    // Очистить все результаты, выведенные ранее,

    payment.innerHTML = "";

    // Стереть содержимое этих элементов total.innerHTML = totalinterest.innerHTML = "";

    chart(); // При вызове без аргументов очищает диаграмму

    }

    }
  • yanpriohas quoted2 years ago
    интерпретатор JavaScript воспринимает разрывы строк как точки с запятой, когда он не может интерпретировать вторую строку как продолжение инструкции в первой строке, имеется два исключения. Первое исключение связано с инструкциями return, break и continue (глава 5). Эти инструкции часто используются отдельно, но иногда вслед за ними указываются идентификаторы или выражения. Если разрыв строки находится сразу за любым из этих слов (перед любой другой лексемой), JavaScript всегда будет интерпретировать этот разрыв строки как точку с запятой
fb2epub
Drag & drop your files (not more than 5 at once)