Просмотр полной версии : Как в javascript передать ссылку?
Зачёт горит, завис на одном задании - намертво
Напишите функцию swap(a, b), меняющую местами значения a и b. Для этого в теле функции используйте дополнительную переменную.
let a = 0, b = 1;
swap(a, b);
console.log(a); // 1
console.log(b); // 0
Что-то я не пойму как реализуется ссылочный тип в JS
function (a, b) {
var c = a;
a = b;
b = c;
}
- бесполезно, меняется только внутри функции.
function (&a, &b) {
- ошибка синтаксиса.
<head>
<meta charset="utf-8">
</head>
<body>
<script>
var a = 0, b = 1;
function swap () {
var c = a;
a = b;
b = c;
}
swap();
console.log(a); // 1
console.log(b); // 0
</script>
</body>
даже ничего передавать не надо, функция сама возьмет если ей понадобится.
Rise,
я не понял что изменится если написать например function swap(x1, x2) ?
До переданных переменных никак не "дотянуться"
j0hnik, но по условию задачи должны быть аргументы)
Если так то да, как вы сказали изменить имена аргументов
let a = 0, b = 1;
function swap (c,d) {
var c = a;
a = b;
b = c;
}
swap(a,b);
console.log(a); // 1
console.log(b); // 0
ruslan_mart
15.06.2017, 20:11
Rise, в условии задачи не сказано, что параметры должны лежать вне функции. Полагаю, нужно поменять параметры местами внутри самой функции и в ней же вывести результат.
j0hnik,
а если переменные a и b по-другому названы?
Вы наверно неправильно поняли, нужен swap точно такой же как в C++
Rise,
да ёбаный в рот, а нахуй ты мне лечишь за названия переменных, а потом говоришь что "без разницы как названы", пиздец блять.
Alexandroppolus
15.06.2017, 20:26
в js по ссылке передаются только объекты
точнее, ссылки на объекты передаются по значению.
т.е. даже если бы эти a и b из задачи были объектами, то в таком виде задача всё равно бы не решалась, в общем случае.
Rise,
еблан при чём тут названия аргументов и названия переменных? Ты с программированием дальше хелловорлда знаком?
в сишке я могу написать
int SWAP(int &a, int &b) {
int c = a;
a = b;
b = c;
}
и похуй что туда передавать, могу написать так же SWAP(a, b) и всё поменяется
Мне в лабе надо то же самое на жс
Зоопарк блять.
ruslan_mart
15.06.2017, 22:10
Немного извращений :D
const myEval = code => eval(code);
function swap(a, b) {
myEval(`a = ${b}; b = ${a}`);
}
let a = 0, b = 1;
swap(a, b);
console.log(a);
console.log(b);
Сойдёт?
Rise,
а в джаваскрипте есть?
Invalid left-hand side in assignment
Rise,
из нового не все поддерживает не только IE.
Rise,
ну если бы новое, это только деструктуризация массива, то все было бы Ок. :)
А на практике новое из HTML5, CSS3 и JS далеко не всё и всеми поддерживается. И бог знает сколько еще времени потребуется на это.
vBulletin® v3.6.7, Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot