2013-12-04 4 views
-4
foo: function() { 
    var bValue = false; 

    boo(2, function() { 
    bValue = true; 
    if (bValue) 
     alert("bvalue is true 1"); 
    }); 

    if (bValue) 
    alert("bvalue is true 2"); 
} 

boo: function (val, fn) { 
    fn(); 
} 

Я делаю что-то similare в своем коде и не могу получить второе предупреждение. Вы видите какие-либо проблемы в коде выше.Понимание области видимости Javascript

+0

Является ли boo отдельной функцией от foo? Разве это не должно быть его собственное заявление? Где это? – zero298

+1

где определяется 'boo'? – Matanya

+0

добавлена ​​функция boo – anand

ответ

1

Вы неправильно используете ярлык в описании функции. Вместо

boo: function (val, fn) { 
    fn(); 
} 

вы должны написать

function boo(val, fn) { 
    fn(); 
} 

Та же проблема с foo. Это вызовет SyntaxError и прекратит выполнение всего скрипта. К счастью, это легко поймать, если вы посмотрите в консоль.

+0

Это не объясняет, почему второе предупреждение не выполняется. –

+1

@VivinPaliath Будет ли первый выполнен? Нет, я не верю. Если ошибок не было, оба предупреждения должны быть выполнены. – Pavlo

+0

Вопрос ОП не очень ясен. Я предполагаю, что есть закрытый объект, и это только второе предупреждение, которое не выполняется (поскольку он ничего не упоминал о первом предупреждении). Если то, что он имеет выше, так это то, как он определяет свои функции, тогда ваш ответ правильный, и он должен освежить синтаксис JS. –

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