var landscape = function() {
var result = "";
var flat = function(size) {
for (var count = 0; count < size; count++)
result += "_";
};
var mountain = function(size) {
result += "/";
for (var count = 0; count < size; count++)
result += "'"; //this statement comes first so ,"'" should print first
result += "\\"; //Then this should print "\"
/*
loop will run 4 times. it should print /'\'\'\' to my understanding.
*/
};
flat(3);
mountain(4);
flat(6);
mountain(1);
flat(1);
return result;
};
console.log(landscape());
为什么要返回:_ _ _ / ' ' ' ' \\_ _ _ _ _ _/ ' \\ _
我认为它应该如何回归:_ _ _ / ' \ ' \ ' \ ' \ _ _ _ _ _ _ / ' \ _
请帮助我理解为什么会这样回来?
答案 0 :(得分:4)
\
每mountain()
只显示一次,因为它不会在for
循环内重复。
循环只使用它后面的第一个语句,类似于:
for (var count = 0; count < size; count++) {
result += "'"; // appended for each `count`
}
result += "\\"; // appended once after the loop has completed
要实现您期望的输出,必须在两个语句周围添加一个块,以便它们一起重复:
for (var count = 0; count < size; count++) {
result += "'";
result += "\\";
}
答案 1 :(得分:3)
它不会返回'\'\'\
,因为\
仅在for
循环完成后打印。如果大括号不与for
循环一起使用,它将仅使用以下指令。在这种情况下,它只使用result += "'"
指令而不是result += "\\"
指令。
所以,用语言来说,你的山(4)功能正在说:
/
'
\