Итак, хотя я и сам разобрался с вопросом, считаю обязанностью сообщить что, как и почему.
В первую очередь: Вопрос был задан совершенно некорректно, но это лишь по незнанию. Короче говоря, сам метод Math здесь совершенно не причём. Проблема заключалась в принципе работы JS (возможно и других языков, мне доподлинно не известно). Разбор и решение проблемы будет немного ниже.
С решением мне помогла статья: "Объекты: передача по ссылке".
Если коротко пересказать статью, то:
1. Обычные значения: строки, числа, булевы значения, null/undefined при присваивании переменных копируются целиком или, как говорят, «по значению».
2. В переменной, которой присвоен объект, хранится не сам объект, а «адрес его места в памяти», иными словами – «ссылка» на него.
Очень хорошо этот принцип демонстрирует простенький код:
var time = {
year: 2345,
month: 11,
day: 10,
hour: 11,
minute: 12,
second: 13,
microsecond: 123456
}
console.log(time); // (*)
time.microsecond++; // (**)
console.log(time);
time.microsecond++;
console.log(time);
time.microsecond++;
Результат работы скрипта виден на скриншоте:
Вместо "123457, 123458, 123459" мы видим "123459" все три раза. Это происходит, потому что что вывод не делает «копию» текущего содержимого, а сохраняет лишь ссылку на объект.
Если остановить код через отладчик, ми получим следующую картину:
- После первого якоря мы увидим:
- После второго якоря мы увидим:
- После третьего якоря мы увидим:
Если перенести доступные мне теперь знания, на мой код и вывести в консоль значение массива numberArray
document.write(numberArray + "<strong> Изначальное значение </strong><br><br>");
console.log(numberArray);
tomath(numberArray,metod1);
console.log(numberArray);
document.write("<br>");
tomath(numberArray,metod2);
console.log(numberArray);
document.write("<br>");
tomath(numberArray,metod3);
console.log(numberArray);
document.write("<br>");
мы увидим:
Следовательно, мы питаемся закруглить уже закругленные значения.
Методы решения:
- Самый простой и очевидный - это добавить несколько новых массивов:
var numberArray = [34.82, 12.90, 17.01, 78.51];
var numberArray2 = [34.82, 12.90, 17.01, 78.51];
var numberArray3 = [34.82, 12.90, 17.01, 78.51];
var metod1 = "round";
var metod2 = "ceil";
var metod3 = "floor";
tomath(numberArray,metod1);
document.write("<br>");
tomath(numberArray2,metod2);
document.write("<br>");
tomath(numberArray3,metod3);
document.write("<br>");
- Написать функцию для ввода значений массива с клавиатуры, тогда будет создаваться "клон" переменной с масивом:
Скрипт с функцией для ввода на jsfiddle.