【发布时间】:2013-05-25 22:52:12
【问题描述】:
我经常会根据自己的心情行事:
情况 A):
function a() {
var msg = 'a()';
..operate on msg
}
function b() {
var msg = 'b()';
..operate on msg
}
情况 B):
var msg;
function a() {
msg = 'a()';
..operate on msg
}
function b() {
msg = 'b()';
..operate on msg
}
请注意,"operate on msg"并不是指一个函数,而是一堆操作。
我对此很感兴趣,因为 JSHint 指出变量已经预定义,尽管它们具有相同的名称但例如出现在不同的函数中。
更新: 我在问这个问题时可能是不正确的,以便清除我更改功能的情况。
更新 2 我理解范围。我的意思是,尽管范围很广,但还有其他优势吗?
【问题讨论】:
-
这不是不同的闭包。
-
@tracevipin 我已将其替换为“功能”。如果我有两个定义相同变量名的函数,linter 会生气
-
@lukas.pukenis 在这个问题的第一个版本之后,我怀疑你完全理解 JavaScript 中的作用域。
-
@Sirko,很抱歉我的问题表现不佳。我对范围界定没有任何问题。我主要关心的是用很多函数重构丑陋的大 JS 文件,如果语句一遍又一遍地使用相同的变量名:)
标签: javascript coding-style jslint jshint