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

时间:2015-01-11 23:05:04

标签: javascript scope javascript-engine

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

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

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

我的主要目的是避免在每个函数顶部的var语句中键入局部变量列表,并避免维护此列表与本地变量保持同步,因为我使用他们在一个功能。不允许全局范围默认值也可以降低出错的风险。

我绝不会希望未声明的变量最终在比第一次使用它们的范围更高的范围内。将它们默认为全局范围是没有价值的。

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

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

1 个答案:

答案 0 :(得分:1)

不,Javascript就像它的行为一样,没有开关可以翻转它的变量声明规则。

'use strict'是您可以用来帮助catch problems more easily的一个选项,但它不会改变规则。

你想要的是一种不同的语言;例如CoffeeScript,一个Javascript预处理器,除其他外,恰好解决了这个variable declaration issue