关于节点/ javascript中的变量声明:var,让const,...
我尝试了一个节点脚本
如果有人声明一个变量而没有任何声明(var
,let const
,...)
x = "my new var";
然后x
将具有全局作用域,并将在节点项目的所有模块中可见
问题
这样声明变量是否正确?还是已弃用/违反语言规则?
答案 0 :(得分:2)
在正常模式下(也称为草率模式)允许使用,但是在ES5 严格模式中,对未声明变量的赋值将引发错误,因此可以将其视为在某种意义上已弃用。
答案 1 :(得分:0)
它可以很好地编译,因此不违反该语言规则,并且据我所知不被弃用。出于同样的原因,全局变量在所有语言中均被视为不当行为,因此被视为不当行为。一个示例,尤其是使用诸如x
之类的通用名称时,可能会错误地在本地覆盖它,并得到一些意外的结果。还有很多其他警告。
有时候可能还可以。我能想到的一个用例是,如果您想在程序中的任何地方使用pi
,则在全局范围内声明它是有意义的。当然,最好将其包装在constants
类中,但是对于单个常量而言,一个类可能会过大,我将在程序顶部定义PI = 3.14。