了解 Javascript 编译器,也许还有 Meteor JS

Understanding Javascript compiler and maybe Meteor JS

在我的 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 ) => {};

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

您的代码没有调用函数,而是定义了一个新函数:

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

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