2014-11-21 4 views
4
var confirm = confirm('Are you sure?'); 

Я только что протестировал это утверждение, и мне была дана ошибка, указав, что confirm не является функцией.Javascript Statement Порядок выполнения

Я сразу обнаружил, что имя переменной переписывает его. Однако почему мой вопрос?

Я знаю, что функции являются первоклассными, и что объявление переменной с тем же именем, что и функция, перезапишет ее в относительной области. Но мое замешательство исходит из того, что, как я думал, было исполнением «справа налево», И.Е. вызов функции выполняется до определения адресата.

Определяется ли переменная в этом случае перед вызовом функции?

+3

_ "станет ли переменная определяется в этом случае перед вызовом функции? »_ - Да. В пределах данной области все переменные определены до того, как выполняется код в этой области, и изначально им присваивается значение 'undefined'. Прочитайте переменную JS «подъем». – nnnnnn

+0

выглядит отлично здесь http://jsfiddle.net/batug0o5/1/ –

+1

'var' - это не исполняемый оператор, подчиненный правилам сверху вниз или справа налево или любому другому исполнению. Это ** декларация **, которая, как говорит @nnnnn, поднимается. –

ответ

6

Благодаря переменной грузоподъемных в JavaScript:

function myFunction() { 
    // ... 
    var confirm = confirm('Are you sure?'); 
    // ... 
} 

становится:

function myFunction() { 
    var confirm; 
    // ... 
    confirm = confirm('Are you sure?'); 
    // ... 
} 

Вам нужно будет сделать следующее для обеспечения вашего значения:

function myFunction() { 
    // ... 
    var confirm = window.confirm('Are you sure?'); 
    // ... 
} 
+1

В любом случае переопределение функции 'confirm()', как это, не очень хорошая идея. Вероятно, у вас должно быть 'var confirmResult = window.confirm (« Вы уверены? »);' Держать его в чистоте – deitch

+0

@deitch Это был промах с моей стороны, с тех пор я переименовал переменную. Я просто хотел узнать, что вызывало это поведение :) – Flosculus

+1

Получил это. Я думаю, что @Phylogenesis хорошо справился с этим с переменным подъемом. – deitch

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