如果我有一对既设置局部变量的函数,例如,i公共for循环中的变量,又一个在另一个正在运行时调用,那么是否有命名空间混淆的危险?
Dan*_*llo 11
请记住,JavaScript没有块范围,只有函数范围.
此外,如果您有嵌套循环,则i以下示例中只有一个变量:
function myFunction() {
for (var i = 0; i < 10; i++) {
for (var i = 0; i < 10; i++) {
// code here will run 10 times instead of 100 times
}
}
// variable i is still accessible from here
}
Run Code Online (Sandbox Code Playgroud)
Douglas Crockford建议var语句应该是JavaScript编程语言的代码约定中函数体中的第一个语句:
JavaScript没有块范围,因此在块中定义变量会使经验丰富的程序员与其他C族语言混淆.定义函数顶部的所有变量.
我认为他有一个观点,正如你在下面的例子中看到的那样,这不会让读者误以为变量i和变量j都存在于for循环块的范围内:
function myFunction() {
var i, j; // the scope of the variables is now very clear
for (i = 0; i < 10; i++) {
for (j = 0; j < 10; j++) {
// code here will run 100 times
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
109 次 |
| 最近记录: |