Я действительно все разобрался и не нашел ответа, который действительно объяснил это хорошо ...Можно ли использовать неглобальные переменные в функции?
Я знаю, как получить доступ к глобальной переменной изнутри функции.
myGlobalVariable = [];
function myFunction() {
myGlobalVariable.push("somedata");
}
Теперь, как получить доступ к переменной на один шаг вверх по цепочке областей действия, если она не является глобальной?
myGlobalVariable = [];
function myFunction() {
var notGlobalVariable = "somedata";
var myOtherFunction = function() {
myGlobalVariable.push(notGlobalVariable); // This is what I'd like to be able to do.
}
}
Я знаю, что я мог бы сделать что-то вроде
var notGlobalVariable = "somedata";
var myOtherFunction = function(arg) {
myGlobalVariable.push(arg);
}
myOtherFunction(notGlobalVariable);
Но вызова функции, которая работает только путь, если у меня есть значение notGlobalVariable
легкодоступных. Я хотел бы быть в состоянии делать глобально вызвать функцию и он всегда использует значение первоначально находился на notGlobalVariable
без необходимости проходить эту величину в.
Редактировать
Хорошо, я вроде поторопился на этом , Я, хотя у меня была проблема с большой переменной, но, по-видимому, моя проблема заключалась в том, что в моем конкретном коде я использовал имя переменной arguments
вместо notGlobalVariable
, и, как я должен был знать, arguments
затенен и ссылается на аргументы, переданные в Я сменил имя на args
, и он отлично работает. Сожалею!
В чем проблема? Ваш пример отлично работает. –
Ваш пример должен работать. Возможно, вы назначаете 'myOtherFunction' и не вызываете' myOtherFunction' с 'myOtherFunction()' –
http://jsfiddle.net/N4kfY/1/ - работает для меня. –