函数中未声明的JavaScript变量覆盖使用
Undeclared JavaScript variable in functions overriding over uses
我有两个函数示例,如下
function call1() {
variable = "test string";
}
function call2() {
variable = responseFromAJAX();
document.title = variable;
setTimeout(function() { call2(o); }, 1000 );
}
如果任何一个函数都可以重写未声明的变量"variable"?即使"变量"没有声明在函数的范围之外?
非常感谢
如果任何一个函数都可以重写未声明的变量"variable"?
是的。除非您处于严格模式,否则为未声明的变量赋值会隐式创建全局变量(我称之为隐式全局变量的恐怖)。所以任何一个函数都可以写入。幸运的是,严格模式阻止了隐式全局变量。
是的,如果您没有将其声明为类型var
,则它将被视为全局变量。这与声明全局变量相同
因此它将充当
function call1() {
variable = "test string";
} // If you call this method variable will have the value as "test String"
function call2() {
variable = responseFromAJAX();
document.title = variable;
setTimeout(function() { call2(o); }, 1000 );
} // If you call this method variable will have the value will be the value from AJAX
相关文章:
- 像createComment这样的各种自定义变量名在内联javascript中被覆盖,但在外部js中没有.为什么?
- 在javascript中使用覆盖变量是不是一种糟糕的做法
- 由于异步回调,变量被覆盖
- 被覆盖的 setTimeout 变量中的函数
- 定义变量是否比在 JS 中覆盖变量使用更多的资源
- 异步Javascript变量覆盖
- 表,并选择要传递到新页面的rRow(id)(这样它就不会覆盖行选择的变量)
- 敲除js变量覆盖
- 返回语句后的函数声明全局变量不会被覆盖
- 在 forEach 循环中覆盖的变量
- 如何保护全局变量以在 Node.js 中被覆盖
- 两个函数使用相同的变量,都不会覆盖其原始变量
- 长方程与覆盖变量
- 使用相同的覆盖变量的 JavaScript 对象
- 不覆盖变量
- 每次循环覆盖变量
- 从数据库读取时覆盖变量
- JavaScript -用户的安全覆盖变量
- 覆盖变量内容javascript
- 覆盖变量或检查是否存在