Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Область видимости переменной. (https://javascript.ru/forum/misc/51398-oblast-vidimosti-peremennojj.html)

sx88 05.11.2014 20:01

Область видимости переменной. [РЕШЕНО]
 
<html>
<head>
  <meta charset="utf-8">
  <title>JS Bin</title>
</head>
<body>
    <script>
        
 
        function round(price_staff) {
            var tmp = 0;
            tmp = price_staff / 10; //5.5
            tmp = Math.ceil(tmp); // 6
            price_staff = tmp * 10; //60
            document.write('in_round=', price_staff,'<br>'); //in_round=60
        }
 
        function payment(price) {
            price_staff = price; //50
            price_staff = price_staff * 1.1; //55
            round(price_staff);
            document.write( 'price_staff_in_payment=',price_staff); // price_staff in paymen = 55
        }
    </script>
    <script>
        var price = 50;
        payment(price);
    </script>
</BODY>
</body>
</html>

kostyanet 05.11.2014 20:04

А зачем у вас теги script вложены один в другой?

sx88 05.11.2014 20:17

Цитата:

Сообщение от kostyanet (Сообщение 339200)
А зачем у вас теги script вложены один в другой?

Да, ошибся :) Но не суть. Почему-то переменная price_staff в разных функциях имеет разное значение. По всей видимости, это ДВЕ РАЗНЫХ переменных, да вот как это происходит понять не могу. Подскажите.

sx88 05.11.2014 20:50

Как работает не понял, но надо было убрать price_staff из function round(price_staff)

kostyanet 05.11.2014 20:54

Так сделайте ее локальной, var price_staff в пейменте.

kostyanet 05.11.2014 21:07

Какая-то логика нелепая. Обычно сначала что-то генерят, потом рендерят собрав все в кучу, в какое-то место. Это что, школьное задание найти косяк препода?

function round(p) {
            return Math.round(p/10)*10;
        }
 
        function payment(price) {
            var x = 1.1;
            price*=x;
            var price_staff=round(price);
            document.write('in_round=', price_staff,'<br>');
            document.write( 'price_staff_in_payment=',price);
        }
        var price = 50;
        payment(price);


Все равно баян.


Часовой пояс GMT +3, время: 23:12.