5 / 5 / 2
Регистрация: 03.11.2018
Сообщений: 206

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

17.07.2019, 21:03. Показов 3414. Ответов 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
6497 / 3908 / 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
420 / 311 / 113
Регистрация: 28.08.2013
Сообщений: 848
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
6497 / 3908 / 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
6497 / 3908 / 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru