我想知道为什么 jsLint 提示我在定义这样的变量时可能会泄漏变量:
var foo = bar = {};
它说我可能正在泄漏 bar
。
我的直觉是因为 bar
是全局变量。那么,如何让 foo
和 bar
在一行中指向同一个对象呢? JavaScript 不允许我写:
var foo = var bar = {};
还是其他问题?
最佳答案
它提示“泄漏变量”的原因是因为您只声明了局部变量 foo
。 bar
没有被声明,它只是被赋值,所以这创建了一个全局变量。你的陈述等同于:
var foo = (bar = {});
这是以下内容的缩写:
bar = {};
var foo = bar;
这样写,您可以看到没有bar
变量的声明。如果要在单个 var
语句中声明多个变量,则必须用逗号分隔它们:
var bar = {}, foo = bar;
或者您可以将它们写成单独的语句:
var bar = {};
var foo = bar;
您还可以将声明和赋值分开:
var foo, bar;
foo = bar = {};
关于javascript - 定义变量时内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31959515/