gpt4 book ai didi

javascript - JavaScript 中的大括号

转载 作者:行者123 更新时间:2023-12-03 07:47:27 24 4
gpt4 key购买 nike

我目前正在处理 Robin Nixon 的 Learning PHP, MySQL, Javascript, CSS & HTML5, 4th Edition ,我正在看他解释如何从函数返回变量数组的部分。

他用来演示这一点的代码是:

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 循环的一部分(它是函数的一部分),但您将其包含在这些大括号内 - 因此它不会按照原作者的预期方式工作。

所以:

 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;

被认为是一个代码语句。知道某件事是否被视为语句的方法是它通常以分号结尾。

始终使用分号来结束语句。不这样做(即使它运行)是不好的做法。

关于javascript - JavaScript 中的大括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35144038/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com