我注意到很多人在回答类似“如何在函数内部创建全局变量”的问题时都会提到“只需在JS代码的顶部定义一个变量,它就会成为全局变量”。大多数答案都会先说无法实现这一点。当然,实现这一点是可能的:
然后,在您的代码中稍后,您可以这样说:
<script type="text/javascript">
window.spam = 'Hello World';
</script>
然后,在您的代码中稍后,您可以这样说:
<script type="text/javascript">
alert(spam);
</script>
这在IE6+、Firefox、Chrome、Safari等浏览器上都可以完美地工作。那么为什么没有人这样做呢?
在我的情况下,我希望人们可以从他们的代码中的任何位置访问名为fooBar
的全局变量,在我的AJAX库中,我希望变量能够自动在后台更新,这样当他们使用$.do_some_magic()
时,他们可以确信fooBar
将反映$.do_some_magic()
所做的更改,而不必考虑它。我不希望他们在他们的代码中创建变量,我也不想在我的库代码中创建变量。我想我只是讨厌在顶部定义全局变量,除非有充分的理由不这样做。难道有吗?