#javascript #global_variables #ecmascript
var arr = ["V", "l", "a", "d", "i", "m", "i", "r"]; var join = function (x) { return window.x = x.join(''); } join(arr); console.log(arr); Вопрос стоит так, нужно получить именно новую переменную arr,которая в функции записывается глобально, а не параметр функции.
Ответы
Ответ 1
Тоже отбитый вариант var arr = ["V", "l", "a", "d", "i", "m", "i", "r"]; var join = function(x) { for (var key in window) if (window[key] == x) window[key] = x.join(''); } join(arr); console.log(arr); Не особо правильно конечно но var arr = ["V", "l", "a", "d", "i", "m", "i", "r"]; var join = function (x) { window[x] = window[x].join(''); } join("arr"); console.log(arr);Ответ 2
Такой код плохой, так как var join = function (x /* аргумент */) { return window.x /* глобальная переменная */ = x.join(''); } идёт путаница с x, в одном месте это название параметра в другом глобальная переменная. Конечно сам код запустится и скомпилируется, но таково кода следует избегать так как его сложно читать и сложно отлаживать. Так же таких конструкций тоже желательно избегать return window.x = x.join(''); лучше сделать отдельными операциями (одна строчка на одну операцию или группу операций единых по смыслу) что бы более была ясна суть, это конечно не ошибка рекомендую делать так window.x = x.join(''); return window.x; Заметим что результат попадает в возвратку функции и в x глобальную переменную, поэтому что бы вывести этот результат в консоль оттуда и надо брать console.log(x); или var rez = join(arr); console.log(rez); итого var arr = ["V", "l", "a", "d", "i", "m", "i", "r"]; var join = function(arr) { window.x = arr.join(''); return window.x; } join(arr); console.log(x);Ответ 3
var arr = ["V", "l", "a", "d", "i", "m", "i", "r"]; var join = function (x) { return window.x = x.join(''); } join(arr); console.log(x); // <- ошибка
Комментариев нет:
Отправить комментарий