[英]Curly braces in Javascript
我目前正在研究Robin Nixon的Learning PHP,MySQL,Javascript,CSS和HTML5,第4版 ,并且在其中的一部分中,他解释了如何从函数中返回变量数组。
他用来证明这一点的代码是:
words = fixNames("the", "DALLAS", "CowBoys")
for(j = 0 ; j < words.length ; ++j)
document.write(words[j] + "<br>")
function fixNames()
{
var s = new Array()
for (j = 0 ; j < fixNames.arguments.length ; ++j)
s[j] = fixNames.arguments[j].charAt(0).toUpperCase() +
fixNames.arguments[j].substr(1).toLowerCase()
return s
}
当我编写此代码时,我写了它:
words = fixNames2("the", "DALLAS", "CowBoys")
for(j = 0; j < words.length; ++j) {
document.write(words[j] + '<br>')
}
function fixNames2() {
var s = new Array()
for(j = 0; j < fixNames2.arguments.length; ++j) {
s[j] = fixNames2.arguments[j].charAt(0).toUpperCase() +
fixNames2.arguments[j].substr(1).toLowerCase()
return s
}
}
我知道,在这本书的早期部分,他提到,你不需要括上花括号单个语句,我想第二for
条件是2报表(以下简称s[j]
部分,并return s
部分) ,因此我用花括号将整个内容括起来,但是由于某种原因,以这种方式编写时,代码仅输出数组中的第一个单词(“ the”,但通过函数正确设置了格式,使其为“ The”)。
我想知道是否有人可以向我解释为什么? 难道第二for
条件其实只有真正1语句? 还是与嵌套花括号的方式有关?
“返回”不是for循环的一部分(它是函数的一部分),但是您将它们包括在这些花括号内-因此,它不会按原始作者的意图起作用。
所以:
for(j = 0; j < fixNames2.arguments.length; ++j) {
s[j] = fixNames2.arguments[j].charAt(0).toUpperCase() +
fixNames2.arguments[j].substr(1).toLowerCase()
return s //// WRONG
}
应该:
for(j = 0; j < fixNames2.arguments.length; ++j) {
s[j] = fixNames2.arguments[j].charAt(0).toUpperCase() +
fixNames2.arguments[j].substr(1).toLowerCase()
}
return s;
或者甚至可以取消括号,因为它只是for循环中的一个语句:
for(j = 0; j < fixNames2.arguments.length; ++j)
s[j] = fixNames2.arguments[j].charAt(0).toUpperCase() +
fixNames2.arguments[j].substr(1).toLowerCase();
return s;
请注意,即使它在两行中,它也应被视为一个语句,因为它应以分号结尾。
也,
s =
x
+
y
+
z;
被视为一种代码声明。 知道某事物是否被视为陈述的方法是,通常以分号结束。
始终使用分号结束语句。 不这样做(即使它运行)也是个坏习惯。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.