Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Подмена переменной в функции (https://javascript.ru/forum/misc/80007-podmena-peremennojj-v-funkcii.html)

AlexRow 16.04.2020 21:15

Подмена переменной в функции
 
ПЕРВЫЙ ВАРИАНТ МОЙ (ОН РАБОЧИЙ). Я до него додумался сам:

Код:

function f(x){
      if(x<0){
        return 0
      }
      else{
        if(x<2){
          return x*x;
        }
        else{
          if(x<5){
            return 6-x;
          }
          else{
            return 1;
          }
        }
      }
    }
   
    x=9*Math.random()-2;
    document.write('Случайный аргумент: '+x+'<br>');
    document.write('Значение функции: '+f(x)+'')


ВТОРОЙ ВАРИАНТ С УЧЕБНИКА. МНЕ ЛИЧНО НЕ ПОНЯТЕН:
Здесь оглашается переменная z, которая в итоге, выводится вместо аргумента x в функции.
Где конкретно z = x?

Код:

  function f(x){
      if(x<0){
        return 0
      }
      else{
        if(x<2){
          return x*x;
        }
        else{
          if(x<5){
            return 6-x;
          }
          else{
            return 1;
          }
        }
      }
    }
   
    let z;
   
    z=9*Math.random()-2;
    document.write('Случайный аргумент: '+z+'<br>');
    document.write('Значение функции: '+f(z)+'')


рони 16.04.2020 21:21

Цитата:

Сообщение от AlexRow
Где конкретно z = x?

Цитата:

Сообщение от AlexRow
document.write('Значение функции: '+f(z)+'')

:-?

AlexRow 16.04.2020 23:36

Конкретно то, что изначально аргумент функции был x, и в операторах if и else также фигурирует x. Но потом вдруг сдесь начинает фигурировать z:
Цитата:

x=9*Math.random()-2;
document.write('Случайный аргумент: '+x+'<br>');
document.write('Значение функции: '+f(x)+'')
Вот я и спрашиваю, почему тогда нужно было объявлять переменную z, и все значение присваивать переменной z, которая в итоге стала на место аргумента x при вызове метода write()?

Aetae 16.04.2020 23:52

Парень, этож самые основы основ, почитай вон учебник сначала, чтоб не было таких вопросов.

Если коротко: внутри функции свои переменные, снаружи другие.
Тот x что у тебя снаружи - это не тот x что внутри. Когда ты делаешь f(что-то), то для function f(x) - x = что-то, для функции function f(y) - y = что-то.

AlexRow 17.04.2020 12:43

Я изучаю несколько учебников, в том числе тот, на который вы дали ссылку.
В моей ситуации сначала объявляется перемення z, ей присваивается значение 9*Math.random()-2. После чего оно через метод document.write выводится в браузер.
Затем через метод document.write() вызывается функция f() с аргументом (параметром) z, в который передается копия переменной z. Проходя через условия if, else, в браузере отображается новое значение копии переменной z. Сама же переменная z своего значения не меняет.
Такой механизм передачи аргументов (параметров) называется передачей по значению.

Paguo-86PK 17.04.2020 12:50

В математике изучается «sin x», но это вовсе не означает, что синусу только икс подходит…:lol:
В уравнениях те же «x, y, z» проходили? Это же не значит, что имена переменных всегда должны именоваться так…

Просто в пределах уравнения/функции переменные для удобства и краткости именуются традиционными аргументами.

AlexRow 17.04.2020 13:45

Это все понятно. Но у меня в примере на основании имени аргумента (который грубо говоря является переменной) происходили расчеты в теле функции. А тут вдруг объявилась переменная с другим именем и значения, которые были даны этому имени начали учавствовать в расчетах в теле функции. Как оказалось эти значения оказались всего лишь копией объявленной переменной и эти копии участвовали в расчетах в теле функции. Такой механизм передачи аргументов (параметров) называется передачей по значению.


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