Передача переменной в функцию (проблема в области видимости) - PullRequest
1 голос
/ 21 ноября 2010

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

function B(p,u) {
    var foo = {};
    foo[u] = function(p) {
        alert('visit internal page '+p);
    };
    $.router(foo);
}

B("about", "!/about");

Ответы [ 2 ]

3 голосов
/ 21 ноября 2010

Просто оставьте его вне списка параметров, например:

function B(p,u) {
    var foo = {};
    foo[u] = function() {
        alert('visit internal page '+p);
    };
    $.router(foo);
}

В настоящее время вы указываете параметр p для внутренней функции, и если он не предоставлен, когда он вызывается (не кажется,это так) что более локальная p переменная будет undefined.Вместо этого просто не указывайте его как параметр, и он будет использовать p из родительской области.

1 голос
/ 21 ноября 2010

Проблема в том, что у вас есть две p переменные одновременно.

function B(outer_p, u) { // <- first p
    var foo = {};
    foo[u] = function(inner_p) { // <- second p
        alert('visit internal page '+ outer_p); // depending on what 
    };                                          // you want to display here
    $.router(foo);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...