Объект Math в функциях
Доброго времени суток.
Каким образом метод Math изменяет содержание исходного массива, который был передан функции в качестве параметра? Насколько я знаю, внутри функции все переменные являются изолированными. Неужели я упустил что-то принципиальное? Пока только учусь) Код прилагается. var oldArray = [0.99, 1.01, 2.49, 3.51]; document.write("Исходный массив ДО вызова функции: " + oldArray.join(", ")); function fun1(array) { var temp; for(var i = 0; i < array.length ; i++) { temp = array[i]; array[i] = Math.ceil(temp); } array = [0, 0, 0, 0]; document.write("<br>Массив в функции: " + array.join(", ")); return array; } var newArray = fun1(oldArray); document.write("<br>Исходный массив ПОСЛЕ вызова функции: " + oldArray.join(", ")); document.write("<br>Новый массив ПОСЛЕ вызова функции: " + newArray.join(", ")); |
Цитата:
|
Вот вариант именно с новым массивом...
<!DOCTYPE html> <html> <head> <meta http-equiv='Content-Type' content='text/html; charset=windows-1251' /> <!-- <script src='https://code.jquery.com/jquery-latest.js'></script> <script src="https://code.angularjs.org/1.3.9/angular.min.js"></script> <script src="https://code.angularjs.org/1.3.9/angular-route.js"></script> --> <style type='text/css'> </style> <script type='text/javascript'> var oldArray = [0.99, 1.01, 2.49, 3.51]; document.write("Исходный массив ДО вызова функции: " + oldArray.join(", ")); function fun1(array) { var temp; for(var i = 0; i < array.length ; i++) { temp = array[i]; array[i] = Math.ceil(temp); } array = [0, 0, 0, 0]; document.write("<br>Массив в функции: " + array.join(", ")); return array; } var newArray = fun1(oldArray.concat()); document.write("<br>Исходный массив ПОСЛЕ вызова функции: " + oldArray.join(", ")); document.write("<br>Новый массив ПОСЛЕ вызова функции: " + newArray.join(", ")); </script> </head> <body> </body> </html> |
можно также oldArray.slice()
|
Почему ссылка передается только на массив, а не на переменную тоже?
Если создать два скрипта, один с массивом с 1 элементом, а второй с переменной. То результат будет разным. В втором случае метод Math не будет изменять содержимое исходной переменной. Где можно почитать годно изложенный материал на эту тему, чтобы понять суть? |
Serg22, тут читали?
|
Ознакомился с материалом по ссылке, теперь все прояснилось. Спасибо! Вопрос закрыт.
|
Часовой пояс GMT +3, время: 22:07. |