理解Javascript编译器和Meteor JS

时间:2018-01-21 09:07:17

标签: javascript meteor

在我的Meteor App的服务器文件夹中,我有server.js和helper.js

在helper.js中我有例如:

import swisseph from 'swisseph'
SWISSEPH = {}
SWISSEPH.SWE_HOUSES_EX = Meteor.wrapAsync(swisseph.swe_houses_ex);

在我的server.js文件中,如果我直接在函数

中传递SWISSEPH.SWE_HOUSES_EX
const calc_longitudes_of_upagrahas = ( SWISSEPH.SWE_HOUSES_EX, flag,latitude, longitude, array_of_juls , index, obj ) => {};

我收到此错误:

While processing files with ecmascript (for target os.osx.x86_64):
server/server.js:488:43: Invalid left-hand side in arrow function parameters (488:43)

但是,如果我首先在另一个变量或const中设置SWISSEPH.SWE_HOUSES_EX,那么它可以工作:

const x = SWISSEPH.SWE_HOUSES_EX  //don't know why if I use SWISSEPH.SWE_HOUSES_EX directly I get an error

const calc_longitudes_of_upagrahas = ( x, flag,latitude, longitude, array_of_juls , index, obj ) => {};

这是什么原因? 对我来说,这是违反直觉的......

1 个答案:

答案 0 :(得分:3)

您的代码不会调用函数,而是定义一个新函数:

const foo = (x, y, z) => {}

此语法创建一个名为foo的新函数,它接受三个参数。所以你的第二个代码示例是有效的,因为x被解释为一个参数;第一个失败,因为SWISSEPH.SWE_HOUSES_EX不是有效的参数名称。