2012-02-07 2 views
0

У меня есть простая функция, которая вызывает другие функции:Странное поведение JavaScript?

function update() { 
    updateMissiles(); 
    updatePlayer; 
    updateTurbines(); 

} 

Они подобны друг другу во всех отношениях, кроме updatePlayer не будет работать, если я ставлю скобки на конце. Это не нарушает код, но мне все еще интересно, почему он это делает?

+2

Не зная ничего о 'updatePlayer', невозможно сказать много. Но функция не будет работать, если она не вызвана, а вызов функции означает '()'. –

+0

@BogdanProtsenko: Что такое 'updatePlayer'? Что вы меня видите, «_updatePlayer не запускается» и как вы проверяете, был ли он запущен? – Tadeck

+1

Какое ваше конкретное сообщение об ошибке? Я предполагаю, что 'updatePlayer' не является функцией к моменту выполнения' update'. Как раз перед 'updatePlayer', напишите' console.log (updatePlayer) ', чтобы узнать, что это за значение. – benekastah

ответ

3

Я предполагаю, что существует исключение в методе updatePlayer, и поскольку вы не вызываете его в коде, который вы вставили выше, вы не получаете исключение.

Я бы открыл инструменты разработчика для любого браузера, который вы используете, и посмотрите, есть ли какие-либо исключения JavaScript.

1

Вы в замешательстве. updatePlayer; не вызывает функцию updatePlayer. updatePlayer();. Что-то еще происходит в вашем коде.

0

Не зная больше, невозможно точно определить, но как лучшее предположение - в области функции update переменная updatePlayer не является функцией.

Попробуйте выполнить регистрацию или отладку вашего javascript, чтобы узнать, что происходит.

0

Функция будет работать, только если вы положите () после своего имени. Если вы не установили скобки, вы получите содержимое функции. Например, если у вас есть:

function updatePlayer(){ alert('This is a player');} 

И называть его без скобок:

alert(updatePlayer); 

насторожило выход будет

function updatePlayer(){ alert('This is a player');} 

Это используется, если вы хотите использовать функции повторного вызова.

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