Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.04.2020, 21:15
Интересующийся
Отправить личное сообщение для AlexRow Посмотреть профиль Найти все сообщения от AlexRow
 
Регистрация: 12.04.2020
Сообщений: 19

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

Код:
 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)+'')
Ответить с цитированием
  #2 (permalink)  
Старый 16.04.2020, 21:21
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,112

Сообщение от AlexRow
Где конкретно z = x?
Сообщение от AlexRow
document.write('Значение функции: '+f(z)+'')
Ответить с цитированием
  #3 (permalink)  
Старый 16.04.2020, 23:36
Интересующийся
Отправить личное сообщение для AlexRow Посмотреть профиль Найти все сообщения от AlexRow
 
Регистрация: 12.04.2020
Сообщений: 19

Конкретно то, что изначально аргумент функции был x, и в операторах if и else также фигурирует x. Но потом вдруг сдесь начинает фигурировать z:
Цитата:
x=9*Math.random()-2;
document.write('Случайный аргумент: '+x+'<br>');
document.write('Значение функции: '+f(x)+'')
Вот я и спрашиваю, почему тогда нужно было объявлять переменную z, и все значение присваивать переменной z, которая в итоге стала на место аргумента x при вызове метода write()?
Ответить с цитированием
  #4 (permalink)  
Старый 16.04.2020, 23:52
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,587

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

Если коротко: внутри функции свои переменные, снаружи другие.
Тот x что у тебя снаружи - это не тот x что внутри. Когда ты делаешь f(что-то), то для function f(x) - x = что-то, для функции function f(y) - y = что-то.
__________________
29375, 35
Ответить с цитированием
  #5 (permalink)  
Старый 17.04.2020, 12:43
Интересующийся
Отправить личное сообщение для AlexRow Посмотреть профиль Найти все сообщения от AlexRow
 
Регистрация: 12.04.2020
Сообщений: 19

Я изучаю несколько учебников, в том числе тот, на который вы дали ссылку.
В моей ситуации сначала объявляется перемення z, ей присваивается значение 9*Math.random()-2. После чего оно через метод document.write выводится в браузер.
Затем через метод document.write() вызывается функция f() с аргументом (параметром) z, в который передается копия переменной z. Проходя через условия if, else, в браузере отображается новое значение копии переменной z. Сама же переменная z своего значения не меняет.
Такой механизм передачи аргументов (параметров) называется передачей по значению.
Ответить с цитированием
  #6 (permalink)  
Старый 17.04.2020, 12:50
Аватар для Paguo-86PK
Профессор
Отправить личное сообщение для Paguo-86PK Посмотреть профиль Найти все сообщения от Paguo-86PK
 
Регистрация: 16.09.2009
Сообщений: 253

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

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

Последний раз редактировалось Paguo-86PK, 17.04.2020 в 13:04.
Ответить с цитированием
  #7 (permalink)  
Старый 17.04.2020, 13:45
Интересующийся
Отправить личное сообщение для AlexRow Посмотреть профиль Найти все сообщения от AlexRow
 
Регистрация: 12.04.2020
Сообщений: 19

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передать только значение переменной из функции Retro_1477 jQuery 3 18.08.2018 13:25
получение значения переменной из функции java script valdur2000 Общие вопросы Javascript 1 14.11.2013 20:22
Переопределение переменной в функции tsigel Общие вопросы Javascript 5 06.09.2013 18:26
изменение значения глобальной переменной внутри функции mgmarket Серверные языки и технологии 14 13.09.2011 00:56
изменение переменной в функции ananax Общие вопросы Javascript 19 12.01.2011 12:09