Как в функцию передать json?

170
17 июля 2018, 15:30

не могу понять, почему внутри функции json = undefined. Почему так происходит? Первый console.log() нормально выводит json.

var r = {...}
console.log(r);
(function (r) {
   console.log(r);
})();
Answer 1

Потому что аргументы и переменные надо именовать понятно для себя и других.

(function (r) {
   console.log(r);
})();

Что здесь r? Просто имя аргумента. Оно никак не связано с переменной r объявленной ранее. А так как называется аргумент так же как и переменная, то в теле функции вам недоступна переменная r. Запутанно? Вот поэтому надо именовать переменные правильно:

(function (jsonStr) {
   console.log(r);       // выводим глобальную переменную r
   console.log(jsonStr); // выводим аргумент, он не передан, поэтому undefined
})();
(function (jsonStr) {
   console.log(r);       // выводим глобальную переменную r
   console.log(jsonStr); // выводим аргумент, он передан и равен глобальной переменной r
})(r);
Answer 2

Потому, что вы не передаете в функцию параметр.

А входной параметр r скрывает глобальную переменную r

Вот рабочий пример

var r = {a: 1}; 
 
console.log(r); 
 
(function (r) { 
   console.log(r); 
})(r);

Фактически происходит такой вызов

var r = {a: 1}; 
 
console.log(r); 
 
(function (a) { 
   console.log(a); 
})(r);

Также будет работать, если входной параметр убрать совсем

var r = {a: 1}; 
 
console.log(r); 
 
(function () { 
   console.log(r); 
})();

Answer 3

В сигнатуре анонимной функции есть параметр. А в вызове - параметра нет.

(function (r) {
   console.log(r);
})(r);
READ ALSO
Поиск по организациям Yandex map API

Поиск по организациям Yandex map API

Есть код который добавляет на карту точки по запросу из JSONПолучаю эти точки и кластеризую их

188
некоректная компиляция коментариев в webpack

некоректная компиляция коментариев в webpack

в файл indexjs импортированы 2 файла sass

154
Как прописать путь к файлу в jq?

Как прописать путь к файлу в jq?

Есть карта от гугл, я прописал путь к своей метке, она картинка

195
Вытащить в js значение поля через запрос к API приложения

Вытащить в js значение поля через запрос к API приложения

При авторизации пользователя на сайте создаётся его уникальный токенЗадача - подставить этот токен на странице *

167