当我在javascript函数中不使用花括号时,它是否重要?

时间:2017-05-24 16:20:50

标签: javascript curly-braces

例如,当我写这种代码时;

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,我很困惑,在这种情况下花括号的逻辑是什么。

3 个答案:

答案 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));