Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
5 / 5 / 2
Регистрация: 03.11.2018
Сообщений: 206

Функция. Присвоить значение переменной

17.07.2019, 21:03. Показов 3329. Ответов 7

Студворк — интернет-сервис помощи студентам
Пример:
JavaScript
1
2
3
4
5
6
7
8
9
10
var someVar = 30;
 
Change(someVar);
 
function Change(x){
    x++;
    //Мне нужно присвоить потом той переменной число x, которая вводилась в функцию (someVar1).
}
 
alert(someVar); //Сдесь должен быть выход 31
Если я введу Change(someVar2), то увеличить должно someVar2.

Заранее спасибо!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.07.2019, 21:03
Ответы с готовыми решениями:

Присвоить переменной следующее значение в массиве
Добрый день! Есть небольшой код: <div class="buttons"> <button class="pre"><img...

Как присвоить переменной значение с интернет страницы?
Доброго времени суток! Придумываю тут скрипт, и не могу додуматься. Как сделать, чтобы скрипт брал текст с интернет страницы и...

Как лучше изменять значение переменной в Javascript через replace или просто присвоить новое?
Нужно мнение спеца по Javascript. Как будет корректнее или может быстрее заменить по клику значение переменной? Короче, допустим есть...

7
 Аватар для Пифагор
2172 / 1655 / 840
Регистрация: 10.01.2015
Сообщений: 5,207
18.07.2019, 00:02
Maximax67, присвойте значение переменной someVar2 и используйте ее как аргумент.
Или Вы хотите работать с необъявленной переменной???

Добавлено через 12 минут
Так нужно?
JavaScript
1
2
3
4
5
6
7
8
9
10
var someVar = 30;
 
var someVar2 = Change(someVar);
alert(Change(someVar2)); // 32
 
function Change(x){
    return ++x;
    // тут нужно пользоваться префиксным инкрементом,
    // ибо значение сначала увеличивается, а после возвращается
}
1
Эксперт JS
2037 / 1096 / 409
Регистрация: 29.04.2016
Сообщений: 2,625
18.07.2019, 00:14
Maximax67,

Так как вы хотите не получится, есть несколько других вариантов
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// Вариант 1
var someVar = 30;
function Change(x){
    return ++x;
}
alert(Change(someVar)); // 31
 
// Вариант 2
var someVar = 30;
alert(++someVar);  // 31
 
// Вариант 3
var someVar = 30;
var plus = ++someVar;
alert(plus);  // 31
1
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
18.07.2019, 13:33
Здравствуйте.
Maximax67, Пифагор, Mr_Sergo, справочник у Мозиллы написан коряво, но всё же:
https://developer.mozilla.org/... structures
7 типов данных являются примитивами:
Boolean (Булев, Логический тип)
Null (Null тип )
Undefined (Неопределенный тип)
Number (Число)
String (Строка)
BigInt
Symbol (в ECMAScript 6)
Все примитивы являются незменяемыми (иммутабельными) - то есть при попытке модифицировать значение данного типа будет создано отдельное значение, не имеющее никакого отношения к старому значению. Если в какой-то переменной находилось старое значение, то оно останется прежним.

Можно бы ещё сказать, что вообще в языках программирования типы делятся на значимые и и ссылочные, и это влияет на способ передачи параметра в функцию.
Но JavaScript слишком хитрит в данном вопросе. чем и сильно запутывает новичков.
Например - string в JS это тщательно замаскированный ссылочный, но иммутабельный тип, прикидывающийся для программиста примитивным типом.

Добавлено через 12 минут
------
В данном случае вся трагедия происходит именно при передаче параметра в функцию.

В JavaScript свои правила, не совпадающие с правилами для строго типизированных языков ))

Для изменяемого типа внутри функции параметр, имеющий обычно другое имя, не совпадающее с внешней переменной, фактически будет работать со значением, находящимся снаружи от функции. Как будто это та же самая переменная.

А для неизменяемого (иммутабельного) типа внутри функции параметр, имеющий обычно другое имя, не совпадающее с внешней переменной, фактически будет работать с отдельной копией, которую не жалко испортить. Значение внешней переменной никак не будет изменено.

Добавлено через 15 минут
-----
Кстати,
JavaScript
1
х++
расшифровывается как
JavaScript
1
х = х + 1
что тоже сильно запутывает новичка.
Число иммутабельное. Но из-за того, что мы ещё раз присвоили другое значение в переменную Х, нам показалось, что мы прибавили единицу к значению, хранящемуся в Х.

Добавлено через 1 минуту
-----
Вот такая в JavaScript сплошная иллюзия и типичная подмена понятий ))
1
411 / 303 / 112
Регистрация: 28.08.2013
Сообщений: 797
18.07.2019, 14:30
Что-то тут намудрили. Я не совсем понял из кода что нужно, поэтому вот два примера
JavaScript
1
2
3
4
5
6
7
8
9
var someVar = 30;
 
Change();
 
alert(someVar);
 
function Change(){
    someVar++;
}
JavaScript
1
2
3
4
5
6
7
8
9
var someVar = 30;
 
Change(x);
 
alert(someVar);
 
function Change(x){
    someVar = x;
}
Для закрепления материала прочтите что такое var, let, const, а главное про их область видимости (scope).

P.S. В JavaScript переменные в функцию передаются как есть (т.е. создаётся новая переменная внутри функции и копируется значение в неё (т.е. переменная за пределами функции не используется)), а при передачи объекта в функцию, - передаётся адрес объекта в функцию (т.е. все изменения объекта сделанные внутри функции будут применены к объекту, который находиться за пределами функции).
1
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
18.07.2019, 16:38
Maximax67, kidASM, в комментариях https://learn.javascript.ru/ob... 2756604874
привели наверно самый удачный вариант объяснения, что главное в передаче параметра именно в JavaScript - это его иммутабельность/мутабельность:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
var a ='hello'; // в а - ссылка на строку 'hello' (помним что строки не изменяются)
 
function A9(mes){
    // скопировали ссылку на 'hello' в mes
    // в mes - ссылка на строку 'hello' (а не сама строка)
    mes+=' world'; // мы создаем новую строку 'hello world' и затираем ссылку на 'hello' ссылкой на новую строку 'hello world'
    // тут mes ссылается на строку 'hello world'
    // 
}
A9(a);
// тут а все еще ссылка на строку 'hello'
alert(a);// покажет hello
"если работает так, то все же передается ссылка на строку и строка это объект а не примитив".
То есть примитивы в JavaScript - это скорее обозначенный известный перечень иммутабельных типов, а не value-типы в понимании строготипизированных языков.

-----
А в справочной литературе обычно пишут непонятную муть, только запутывая новичка.
1
5 / 5 / 2
Регистрация: 03.11.2018
Сообщений: 206
18.07.2019, 16:45  [ТС]
Спасибо! Уже все понял
0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
18.07.2019, 16:48
Maximax67, даже я с Вами понял. Товарищ в комментах на learn.javascript.ru даже немного точнее и правильнее раскрыл идею, чем я в своём посте №4.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.07.2019, 16:48
Помогаю со студенческими работами здесь

Не получается присвоить значение переменной в функции
Недавно начал изучать Ajax, но без помощи JQuery. Есть вот такая функция: function ajaxGet(url, params, callback) { var request...

Как присвоить переменной значение номера позиции входящей строки?
Народ, обясните. Я не могу понять, как присвоить переменной значение номера позиции входящей строки NN=StringName.lastindexof('a') -...

Как присвоить переменной dir в каждой из ссылок своё значение?
Привет! Подскажите, пожалуйста, как присвоить переменной dir в каждой из ссылок своё значение (тестовая строка): Спасибо index.htm ...

Функция не меняет значение глобальной переменной
Функция не меняет значение переменной, а нужно чтобы меняло. В JavaScript я нуб. Описание функции queryFeatures : queryFeatures(query,...

Как присвоить переменной "strana" значение select-а?
<HTML> <HEAD> <BODY> <script> var strana = 0; </script> <select...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru