为什么我可以引用Javascript中尚未定义的变量
Why can I reference a variable not yet defined in Javascript?
在这里创建函数foo
时,我引用了一个尚未声明的变量fromTheFuture
。这个实际上按预期运行,但为什么?这被认为是危险的还是糟糕的做法?
var foo = function(x) {
return fromTheFuture * x;
};
var fromTheFuture = 5;
console.log(foo(10));
不过,如果您有几个函数想要以循环的方式相互使用,而不必在方法的开头用var
来声明它们,我可以看到这非常方便。
调用foo
时,已定义fromTheFuture
。更准确地说,由于吊装,您的代码本质上是:
var foo, fromTheFuture;
foo = function(x) {return fromTheFuture*x;};
fromTheFuture = 5;
console.log(foo(10));
如果在fromTheFuture=5
之前调用foo(10)
,则会得到NaN
。
是的,整个脚本被处理首先,变量被添加到"数据存储"中,然后才执行。
然而,这是不鼓励的,因为它使代码难以阅读。如果您想了解更多关于javascript代码质量的信息,请查看jslint。这是一种FxCop for js。试着把你的代码复制粘贴到那里。
它在javascript中的原因是,它首先定义所有变量,然后开始初始化,然后如果在某个地方需要初始化点,它会尝试初始化,称为第一个
相关文章:
- Socket.IO未定义变量
- 更改 Javascript 对象中所有未定义变量的值
- coffeescript,类未定义变量
- 使用下划线未定义变量时发生抛出/捕获错误
- 网络浏览器正在成为“;严格的“;用于Javascript中未定义变量的操作
- 使用window.location时未定义变量
- 传递给数据的未定义变量
- bizzare未定义变量
- JavaScript 中全局范围内存在未定义变量的原因是什么?
- JavaScript onClick 参数表示未定义变量
- 在指令中使用 $scope.$watch 处理未定义变量的替代方法
- 对于循环错误:未捕获的引用错误,未定义变量.怎么了
- JavaScript / YouTube API - 未定义变量 YT
- 未捕获的引用错误:在测试真实性时未定义变量
- 通过使用JavaScript“未定义”(变量),我们可以释放系统内存
- 与未定义变量相关的错误
- Angularjs 控制器中的未定义变量
- 角度解析:未定义变量
- BackboneJS Uncaught ReferenceError:未定义变量
- 使用Underscore JS部分和for循环的未定义变量对象