【发布时间】:2015-01-11 23:05:03
【问题描述】:
这可以通过编写一些代码来拦截全局范围默认声明,还是通过每个程序或函数都可以访问的 javascript 引擎本身的设置来完成?
我的意思是,如果我可以在程序(或函数)的顶部,告诉 javascript 引擎对未声明的变量使用本地范围而不是全局范围......那么,当 javascript 引擎编译每个函数时,它会在本地范围内声明它们。
我理解如果你想在当前范围之外声明一个变量,那应该明确地完成,因为没有人知道你想在哪里声明它,但我认为默认为全局范围会留下太多的错误空间并且强制太多在每个函数中输入 var 语句,所以如果可能的话,我想更改程序中的默认值。
我的主要目的是避免在每个函数顶部的 var 语句中键入局部变量列表,并避免在我使用局部变量时保持该列表与局部变量同步一个函数。不允许全局范围默认值也可以降低出错的风险。
我绝不希望未声明的变量最终位于比首次使用它们的范围更高的范围内。让它们默认为我可以看到的全局范围没有任何价值。
我知道我可以在当前范围(或全局范围)中显式声明变量,但希望避免这样做并使用比 JavaScript 中内置的全局范围默认值更有用的默认值。
我也知道我可以使用“使用严格”来强制显式声明所有变量。不想争论它的对错,而只是询问是否有任何方法可以将给定函数的默认值更改为本地范围而不是全局范围。
【问题讨论】:
-
我不知道有这样的选择。但是你可以
use strict来限制可能性。 -
您认为这条道路的根本问题是什么?
-
使用CoffeeScript,它解决了这个特殊的烦恼,并使 Javascript 语法在整个 IMO 中更加可口。
-
也许我不只是不理解你的问题,而是声明未声明的变量是什么意思?
-
缺点是追逐范围错误,对我来说没有多大意义,似乎你正在与语言抗争而不是接受它
标签: javascript scope javascript-engine