ES6解构对象,不用作函数参数时的赋值默认值?

时间:2015-10-04 19:55:59

标签: javascript ecmascript-6 destructuring

我有:

const fs = require('fs');

const packageConfig = JSON.parse(fs.readFileSync('./package.json'));
const { jspm: { configFile: jspmConfigFile }} = packageConfig;

packageConfig的{​​{1}}值可能未定义。在这种情况下,我想将configFile默认为jspmConfigFile

是否可以在不创建扩展packageConfig对象的情况下执行此操作?

我意识到我可以做类似的事情:

'config.js

但只是为了通过解构来获得合理的默认值,这是非常混乱的。

我错过了什么?

2 个答案:

答案 0 :(得分:5)

对象解构中的默认值的语法是:

const { jspm: { configFile: jspmConfigFile = 'config.js' }} = packageConfig;

但这还没有在Firefox中实现:https://bugzilla.mozilla.org/show_bug.cgi?id=932080

答案 1 :(得分:2)

我不确定ES2015的解构实际上会在这里买到任何东西。在一天结束时,你只是在解构一个元素。你几乎写了一个奇特的方法:

const jspmConfigFile = packageConfig.jspm.configFile;

您可以在最里面的部分中使用= 'defaultValue'指定默认值,但我不相信它实际上比ES5 || 'default'版本更好。

作为旁注,您可以在节点中require JSON文件:

const jspmConfigFile = require("./package.json").jspm.configFile || "default";

我认为是一个短的衬里。你可以直接import在一个班轮中使用它:

import  { jspm: { configFile: jspmConfigFile = 'config.js' }} from "./package.json"

但老实说,我认为这不是更清楚。