声明对象文字时出现意外标识符错误
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 值。
为了完成一个简单的 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 值。