【发布时间】:2011-03-28 00:50:20
【问题描述】:
我有这个代码...
function a(options) {
for (var item in options) {
if ( ! options.hasOwnProperty(item)) {
continue;
}
this[item] = options[item];
}
}
a({ 'abc': 'def' });
虽然这会从对象中解包变量,但会将它们设置为全局范围(附加到window),因为在这种情况下this 是window。
所以在函数之后我可以做alert(abc),它会提醒def,这不好。
如何将变量的范围设置为函数?
【问题讨论】:
-
我认为唯一的可能是使用
with,但通常应该避免使用。 -
@Felix 谢谢,请发表答案:)
-
就像 Felix 说的那样,你可以使用 with,但我有点好奇为什么你会费力地将对象解压到函数的作用域中。你不能只使用你传入的选项变量吗?
-
@Mrbuubuu 我在回答this question,这个概念让我很感兴趣。
标签: javascript scope