0

--l=4 および --w=4 で solve-3 を実行すると、関数rectangle.perimeter およびrectangle.area は NaN を出力します。なんで?入力された整数が文字列に変換されているように見えたので、Number() を追加しましたが、何も変わりませんでした。

ファイル 1: rect-2.js

module.exports = function(l,w,callback) {
try {
    if (l < 0 || w < 0) {
        throw new Error("Rectangle dimensions should be greater than zero: l = " + l + ", and w = " + w);
    }
    else 
        callback(null, {
            perimeter: function(l,w) {
                return (2*(l+w));
            },
            area: function(l,w) {
                return (l*w);
            }
    });
 }
catch (error) {
    callback(error,null);
}
}

ファイル 2: solve-3.js

var argv = require('yargs')
.usage('Usage: node $0 --l=[number] --w=[number]')
.demand(['l','w'])
.argv;


var rect = require('./rect-2');

function solveRect(l,w) {
    console.log("Solving for rectangle with length: " + l + " and      width: " + w);

rect(l,w, function(err,rectangle) {
    if (err) {
        console.log(err);
    }
    else {
        console.log("The area of a rectangle with length = "+l+" and width = "+w+" is "+rectangle.area());
        console.log("The perimeter of a rectangle with length = "+l+" and width = "+w+" is "+rectangle.perimeter());
    }
  });
};

solveRect(Number(argv.l),Number(argv.w));
4

1 に答える 1