2013-03-06 5 views
-1

Я пишу JavaScript-код, и мне сказали, что я не должен изменять глобальную переменную внутри функции. Почему это будет проблемой? Существуют ли стандартные альтернативы этому?Почему я не должен менять глобальную переменную внутри функции?

+1

Это вопрос управления рисками. Эта глобальная переменная может повлиять на что-то еще, не затрагивая ничего другого. – Joe

+0

Вы должны использовать как можно меньше глобальных переменных, но если это полезно для вашего кода, и вы не можете думать о другом способе его достижения, вы можете это сделать. –

+0

@Joe Итак, было бы лучше создать новую переменную? например test2 = тест, а затем изменить тест2 по мере необходимости? – parap

ответ

3

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

Название clobbering также является проблемой. Тем не менее, это можно легко устранить с помощью namespacing ваших глобальных переменных.

Наконец, как вы, вероятно, знаете, так как ваш вопрос говорит «почему бы мне не изменить глобальную переменную», readonly globals (константы) на самом деле не проблема, потому что они не меняются и, следовательно, не имеют любые побочные эффекты.

+0

Спасибо. Что помогает. – parap

0

See this Cartoon

Глобальные переменные являются анти-тезис поточно-систем. Вы не должны иметь их, но если у вас есть, только один поток должен владеть/изменять их. Они должны всегда обрабатываться через сервисный уровень.

+0

Не могли бы вы определить поток? – parap

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