节点抱怨变量在条件赋值中未定义?

时间:2018-08-30 17:54:08

标签: javascript node.js

我试图让用户选择将options参数传递给函数以覆盖这样的默认变量:

 let methodName = (options && options.methodName) || 'getSpaces';

但是,当我将此行放入节点CLI时,出现错误:ReferenceError: options is not defined

为什么我不能做这种事情?

3 个答案:

答案 0 :(得分:2)

如果您不确定options是否会被定义,则可以执行以下操作:

let methodName = (typeof(options) !== 'undefined' && options.methodName) || 'getSpaces';

答案 1 :(得分:1)

这样做

let options;
let methodName = (options && options.methodName) || 'getSpaces';

您正在尝试访问不存在的变量,这就是它引发此错误的原因。如果出于相同的原因,即使在浏览器控制台中粘贴相同的代码,也会出现相同的错误。

答案 2 :(得分:0)

函数声明对我来说似乎是错误的。 可以是以下之一:

    let methodName = (options) => ((options && options.methodName)  || 'getSpaces');
    let otherMethod = (methodName = "getSpaces") => (methodName)
    console.log(methodName())  //getSpaces
    console.log(methodName({methodName:"testMethod"}))  //testMethod
    console.log(otherMethod())  //getSpaces
    console.log(otherMethod("anotherTestMethod"))  //anotherTestMethod