2013-06-13 3 views
0

Пока я просматриваю какой-то код JS, я нашел код.Работает функция JS без аргументов. Как?

Пример кода:

arg = "TEST ALERT MESSAGE"; 
MyFunction(arg); 

function MyFunction() 
{ 
alert(arg) 
} 

Над MyFunction() получает предупреждающее сообщение, но нет параметра для получения входящего arugment.

Но когда я изменяю переменную «arg» (в функции и вне функции «arg»), она не работает.

Как это возможно?

Заранее спасибо

+0

Если 'MyFunction' не имеет локальную версию' arg', он будет пытаться обратитесь к свойству с именем 'arg' во внешней области. В противном случае вы получите 'undefined'. – Marty

+0

Функция без каких-либо предопределенных аргументов может принимать аргументы, они являются динамическими и могут быть доступны через псевдо-массив 'arguments'. – elclanrs

ответ

1

Область видимости переменной в JavaScript не работает так, как вы думаете. для того, чтобы сделать эту переменную «частным» попробовать:

var arg = "not private"; 
function privateMSG(){ 
var arg = "private"; 
    function alerter(){ 
    alert(arg); 
} 
    alerter(); 
} 

MDN has a much better explanation в Вложенные функции и закрытия раздел

+3

На самом деле они делают. Но их область привязана к той, в которой они определены. Переменные поисковые запросы начинаются в области функции, и если они не могут быть разрешены там, поиск будет продолжаться по цепочке, и, наконец, заканчивается неопределенным, если его не найти. – Jonas

+0

Спасибо, ребята. Исправлена. – raam86

+0

Эта мощь javascript или любой подобный баг ?. Я думал, что нет безопасности – Natesan

Смежные вопросы