unj*_*nj2 14 javascript namespaces global-variables
JavaScript:好的部分将这些类型的声明定义为错误:
foo = value;
Run Code Online (Sandbox Code Playgroud)
这本书说:"JavaScript使被遗忘的变量全局化的政策会产生很难找到的错误."
除了典型全局变量的通常危险之外,这些隐含全局变量的一些问题是什么?
lon*_*day 15
正如对此答案的评论中所讨论的,设置某些值可能会产生意外后果.
在Javascript中,这更可能是因为设置全局变量实际上意味着设置window对象的属性.例如:
function foo (input) {
top = 45;
return top * input;
}
foo(5);
Run Code Online (Sandbox Code Playgroud)
这会返回,NaN因为您无法设置window.top和乘以window对象不起作用.将其改为var top = 45工作.
您无法更改的其他值包括document.此外,还有其他全局变量,一旦设置,就会做令人兴奋的事情.例如,设置window.status更新浏览器的状态栏值并window.location转到新位置.
最后,如果更新某些值,则可能会丢失某些功能.例如,如果您设置window.frames为字符串,则无法使用window.frames[0]访问框架.
全局变量使得隔离代码和在新的上下文中重用它非常困难。
第一点:如果您有一个依赖于全局变量的Javascript对象。您将无法在应用中创建该对象的多个实例,因为每个实例都会更改全局值,从而覆盖先前由另一个实例写入的数据。(当然,除非该变量具有所有实例共有的值-但通常您会发现这样的假设是错误的)。
第2点:全局变量使获取现有代码段并在新应用中重用它们变得困难。假设您在一个文件中定义了一组函数,并且想在其他文件(在另一个应用程序中)中使用它们。因此,您将它们提取到一个新文件中,并将该文件包含在新应用程序中。如果这些函数依赖全局变量,则第二个应用程序将在运行时失败,因为全局变量不存在。在代码中看不到对全局变量的依赖性,因此忘记这些变量(将函数移至新文件时)可能是危险的。
| 归档时间: |
|
| 查看次数: |
5023 次 |
| 最近记录: |