声明对象文字时出现意外标识符错误

unexpected identifier error when declaring object literal

为了完成一个简单的 node.js 练习,我尝试了几种变体。我怀疑我遗漏了一些非常简单的东西。

我创建 var Calc 的原因是因为我想导出 'calculator' 函数。

错误:

/Users/alex/zdev/react-project/calc.js:4
    var add = function(){
    ^^^

SyntaxError: Unexpected identifier

文件calc.js:(文件已缩短以保持简洁)

var readline = require('readline-sync');

var Calc = {
        var add = function(){
                var num1 = readline.question("num1: ");
                var num2 = readline.question("num2: ");
                console.log(num1 + num2);
        };
}

module.export = Calc;

调用文件:

var calc = require('./calc');

var Calc = new calc.Calc();

Calc.add();
Calc.sub();
Calc.divide();

您使用函数 add 定义了一个新对象 Calc,但语法不正确。正确的语法是:

var Calc = {
  add: function() {
    var num1 = readline.question("num1: ");
    var num2 = readline.question("num2: ");
    console.log(num1 + num2);
  }
};

如果你想制作构造函数(我的意思是从你的语法)你应该这样做:

function Calc() {
}

Calc.prototype.add = function() {
    var num1 = readline.question("num1: ");
    var num2 = readline.question("num2: ");
    console.log(num1 + num2);
};

module.exports = Calc;

然后像这样导入:

var Calc = require('./calc');

var calc = new Calc();

calc.add();
calc.sub();
calc.divide();

但我更喜欢你使用 ES6 class 语法,Calc 构造函数将如下所示:

class Calc {
    constructor() {}

    add() {
        var num1 = readline.question("num1: ");
        var num2 = readline.question("num2: ");
        console.log(num1 + num2);
    }
}

module.exports = Calc;

我建议使用 JavaScript classes introduced in ECMAScript 2015

class Calculator {
  constructor() {
    console.log("[Calc] created!");
  }

  static add(a, b) {
    return a+b;
  }

}

let Calc = new Calculator();

解决方法如下:

调用文件:

var calc = require('./calc');
var Calc = calc.Calc;
Calc.add();

计算文件:

var Calc = {
        add: function(){
                var num1 = readline.question("num1: ");
                var num2 = readline.question("num2: ");
                console.log(num1 + num2);
        },
        divide: function(){
                var num1 = readline.question("num1: ");
                var num2 = readline.question("num2: ");
                console.log(num1 / num2);
        },
        sub: function(){
                var num1 = readline.question("num1: ");
                var num2 = readline.question("num2: ");
                console.log(num1 - num2);
        }
}

module.exports = {Calc:Calc}

下面的几行是原来的错误所在:

在从其他函数导入后定义我的 class

Calc = calc.Calc;

使用逗号而不是分号来分隔我的对象属性

},

没有在模块导出中定义字典。 还有,我原来写的是'module.export'不是'module.exports'

module.exports = {Calc:Calc}

而且我忘了将 parseInt() 用于我的 num1 和 num2 值。