我已养成在所有功能的顶部添加以下内容的习惯:
var local = {};
Run Code Online (Sandbox Code Playgroud)
这样,我明确地限定了我的所有变量.例如:
for (local.i=0; local.i<x; local.i++) {} // local scope: good!
for (i=0; i<x; i++) {} // accidental global scope: bad!
Run Code Online (Sandbox Code Playgroud)
问:有没有办法将Function原型更改为包含var local = {}; 作为其定义的一部分?这样我可以假设"本地".表示在本地范围内明确表示.
答案是否定的,您不能隐式添加变量声明并在每个函数作用域中初始化它(谢天谢地)。您需要手动管理变量范围,并在需要时/如果需要的话使用分析工具。
想象一下这是否可能。您加载的任何代码都可能会破坏任何其他变量作用域,从而有效地破坏作用域变量的目的。
这Function.prototype不会有帮助,因为原型继承与变量范围无关。
i你把它放在一个物体中来保护的技巧local并不能解决任何问题。它只是将问题从i变量转移到local变量,并且仍然不会阻止您使用i而不是local.i.
虽然包含"use strict";可以通过提供有用的错误消息来提供帮助,但您需要记住,它会改变某些情况下的行为,从而可能破坏代码。
| 归档时间: |
|
| 查看次数: |
63 次 |
| 最近记录: |