例如,当我写这种代码时;
var power = function(base, exponent) {
var result = 1;
for(var count = 0; count<exponent; count++)
result *= base;
return result;
};
console.log(power(2, 10));
我得到1024,但是当我写这种代码时;
var power = function(base, exponent) {
var result = 1;
for(var count = 0; count<exponent; count++) {
result *= base;
return result;
}
};
console.log(power(2, 10));
我得到2,我很困惑,在这种情况下花括号的逻辑是什么。
答案 0 :(得分:1)
for(var count = 0; count<exponent; count++)
result *= base;
相当于
for(var count = 0; count<exponent; count++) {
result *= base;
}
第一个块完全运行,因为默认情况下for循环只包含它之后的行,所以在循环完全执行之后才会触发“return”。
在第二个块中,你的循环只执行一次,因为函数一旦命中“return”就会退出。
答案 1 :(得分:0)
当块内只有一个语句时,可以省略控制块中的花括号。虽然是允许的,但它是不可取的,因为它是一种常见的编码模式,导致错误。
请参阅以下示例:
// Not using the braces leads to confusing code that can cause bugs:
if("scott" === "scott")
console.log("scott === scott");
console.log("Am I from the true section of the if/then or not?");
// Using them makes it much more simple to understand the code
if("scott" === "scott"){
console.log("scott === scott");
}
console.log("I am clearly not from the true section of the if/then!");
答案 2 :(得分:0)
始终使用花括号,不使用它们会导致意外行为。问题是,你需要在for循环之外返回:
var power = function(base, exponent) {
var result = 1;
for(var count = 0; count<exponent; count++) {
result *= base;
}
return result;
};
console.log(power(2, 10));