NodeJS:export类有一个返回undefined

时间:2017-07-19 17:00:21

标签: node.js module undefined

我导出了一个类来表示网格中的一个点。这个班级有一个"距离"方法。

当我在另一个nodeJs文件中使用此方法时,结果始终为Undefined。 我不明白为什么。

这是我的源代码:

const math = require('Math')

function checkCoordinate(x) {
 if ( (typeof x == 'number') &&
   (x > 0) && (x % 1 == 0 ) ) {
     return x
   }
 else throw (new Error('ERR_INVALID_ARG_TYPE'))
}
/**
  * Build a new square for a grid
  * @class
  * @classdesc Represent a square in a grid
  */
class square {
  constructor (abscissa, ordinate) {
    try {
      this.abscissa = checkCoordinate(abscissa)
      this.ordinate = checkCoordinate(ordinate)
    } catch (err) {
      throw (err)}
  }

  distance (square2) {
    if (square2 instanceof square)
      return
      math.ceil (
        math.sqrt(
          math.pow((this.abscissa-square2.abscissa), 2) +
          math.pow((this.ordinate-square2.ordinate), 2)
        )
      )
    throw (new Error('ERR_INVALID_ARG_TYPE'))
  }
}

module.exports = square

当我尝试使用它时:

var Square =  require ('./objects/square.js')

var sA = new Square(1,1)
console.log(sA.distance(new Square(20,20)))

结果未定义:

$ npm start

> target-rpg@1.0.0 start D:\Documents\Programmation\NodeJS\target-rpg
> node server.js

undefined

我应该得到27.而不是它我得到了未定义。 我无法弄明白。

我正在使用节点8.1.4

任何帮助?

1 个答案:

答案 0 :(得分:0)

通过在不同的行上提及returnmath.ceil,您将返回结果而不计算结果。两者都应该在同一条线上。

return math.ceil(
    // sqrt code
)