2013-06-29 5 views
1
for(var key in object){ 
    //process object[key] 
} 

или простоДолжны ли вы создать var внутри цикла for-in?

for(key in object) { 
    //process object[key] 
} 

Есть ли разница?

+0

ключ во втором случае можно удалить, используя ключевое слово delete – bugwheels94

+1

Что вы имеете в виду? –

+0

см. Последние две строки этой статьи https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects?redirectlocale=en-US&redirectslug=JavaScript%2FGuide%2FWorking_with_Objects – bugwheels94

ответ

5

Да, есть разница. Независимо от того, используете ли вы var или нет, key по-прежнему будет переменной, и его «жизнь» на самом деле не закончится после того, как будет выполнена for, ее объем будет охватывать до конца функции. Но если вы не используете var - key будет глобальным.

1

Есть разница. Если вы еще не объявили key, var key объявит key. Если у вас есть, это переоценка и не очень хорошая вещь, но это не имеет большого значения.

Если вы еще не объявили об этом, не объявляя его и не используя его, как в вашем втором примере, это плохо. Он просачивается по всему миру, break in strict mode, и будет медленным.

1

Если вы ищете рекомендацию, всегда используйте для нее var, она является более безопасной (поскольку ее область действия является наименьшей возможной) и быстрее (поскольку переводчику не придется искать, если переменная уже существует во всем глобальном масштабе). Плюс это recommanded by Google.