我目前正在使用Robin Nixon的Learning PHP, MySQL, Javascript, CSS & HTML5, 4th Edition,並且我介紹瞭如何從函數返回一個變量數組。Javascript中的大括號
他用來證明這一點的代碼是:
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個語句?或者它可能與我嵌套花括號的方式有關?
你的'return'語句在'for'循環中,所以只有循環的第一次迭代在它返回之前執行。 –
一旦你點擊了'return'語句,你的方法就滿足了,所以算法結束了。如果將它移到循環外面,它將按預期運行。 –
是的。第二個'for'循環的目的是在其中只有一個語句 - 這就是爲什麼它不使用大括號。通過在for循環中放入'return'來改變程序。 – nobar