有 javascript 声明(默认)未声明的变量到当前局部范围(基于首次使用)而不是全局范围?

Have javascript declare (by default) undeclared variables to the current local scope (based on first use) instead of global scope?

这是否可以通过编写一些代码来拦截全局范围默认声明或通过每个程序或函数都可以访问的 javascript 引擎本身的设置来完成?

我的意思是,如果我可以在程序(或函数)的顶部告诉 javascript 引擎对未声明的变量使用本地范围而不是全局范围...然后,当javascript 引擎编译每个函数,它会在本地范围内声明它们。

我知道如果你想在当前范围之外声明一个变量,那应该明确地完成,因为没有人知道你想在哪里声明它,但我认为默认为全局范围会留下太多错误和强制的空间每个函数中输入的 var 语句太多,所以如果可能的话,我想更改程序中的默认值。

我的主要目的是避免在每个函数顶部的 var 语句中键入局部变量列表,并避免在我使用时保持此列表与局部变量同步它们在一个函数中。不允许全局范围默认值也降低了出错的风险。

我绝不希望未声明的变量最终出现在比它们首次使用的范围更高的范围内。让它们默认为我可以看到的全局范围没有任何价值。

我知道我可以在当前作用域(或全局作用域)中显式声明变量,但我想避免这样做并使用比 javascript 中内置的全局作用域默认值更有用的默认值。

我也知道我可以使用 "use strict" 强制显式声明所有变量。不想争论它的对错,只是问是否有任何方法可以将给定函数的默认值更改为局部作用域而不是全局作用域。

不,Javascript 的行为是这样的,没有开关可以翻转来改变它的变量声明规则。

'use strict' is an option you can employ to help you catch problems more easily,但不会改变规则。

你要的是另一种语言;例如 CoffeeScript, a Javascript preprocessor which, among other things, happens to solve this variable declaration issue 显式。