Multiply

Go to the battlefield

Instructions

The code does not execute properly. Try to figure out why.

function multiply(a, b){
  a * b
}

Test Cases

Test.assertEquals(multiply(1,1), 1);
Test.assertEquals(multiply(2,1), 2);
Test.assertEquals(multiply(2,2), 4);
Test.assertEquals(multiply(3,5), 15);

Solution

function multiply(a, b){
  return a * b
}

Discourse

这一道题可以说是非常的简单啦,考的就是一个函数的返回值。原题中只进行了计算却没有将计算结果返回。

Improvement

回答到上一步基本上就已经解决了这个问题了,但是作为一个经验丰富的工程师,需要做的远不止只是解决问题,还要对各种边际情况进行考虑和兼容。

function multiply(a, b){
  if (!a || !b || typeof(a) != "number" || typeof(b) != "number") {
    return 0
  }

  return a * b
}

这里我们对变量 ab 的边际情况进行了处理,我们这里判断如果是非法值返回了 0,你当然也可以选择直接抛出一个错误。

Further improvement

const multiply = function multiply(a, b){
  if (!a || !b || typeof(a) != "number" || typeof(b) != "number") {
    return 0
  }

  return a * b
}

我们甚至可以更进一步,将函数声明更换为函数表达式,因为总所周知,在 JS 中函数声明的形式会导致『变量提升』,将该函数提升至当前函数级作用域的顶部,有时候会导致容易迷惑,使得代码不便于被理解和调试。

results matching ""

    No results matching ""