让 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'
是一个选项,你可以用它来帮助你更轻松地发现问题,但它不会改变规则。
你想要的是一种不同的语言;例如CoffeeScript,一个Javascript预处理器,除其他外,它恰好可以显式地解决这个变量声明问题。
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 我可以获得相对于被点击元素的确切点击位置吗
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 正在全局范围中查找JavaScript函数
- 如何包含特定于每个视图angularjs的javascript文件
- 角度范围$watch()等效于Rivets.js
- 如何使用EnquireJS使AngularJS范围变量依赖于媒体查询
- socket.io 客户端是否必须存在于全局范围内
- 让 javascript 将(默认情况下)未声明的变量声明到当前本地范围(基于首次使用)而不是全局范围
- 相对于日期范围的日期/时间格式
- Javascript Date 适用于临时变量,但在首次分配给变量时失败
- 正在禁用HTML验证.如何设置'novalidate'适用于全球范围内的每种形式
- 相对于输入的绝对定位[类型=范围]
- 我如何将包含$(this)的函数应用于选择器的范围
- 移相器.io如何在全局范围内使用独立于国家的资产
- Highcharts -设置minRange独立于系列,范围
- 获取所选文本相对于元素的范围
- 如何获取一周中存在于某个日期范围(Javascript)中的天数列表
- 如果内联样式包含颜色,则将类应用于范围
- Javascript & # 39;范围# 39;相当于