让 javascript 将(默认情况下)未声明的变量声明到当前本地范围(基于首次使用)而不是全局范围

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

本文关键字:范围 于首次 全局 情况下 默认 javascript 未声明 声明 变量      更新时间:2023-09-26

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

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

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

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

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

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

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

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

'use strict'是一个选项,你可以用它来帮助你更轻松地发现问题,但它不会改变规则。

你想要的是一种不同的语言;例如CoffeeScript,一个Javascript预处理器,除其他外,它恰好可以显式地解决这个变量声明问题。