私はお互いに-依存共同二つのファイルがあります。デフォルトパラメータ未定義である
runner.js
import { build, altBuild } from './build';
const defaultValue = {
code: 42,
};
export function options(value = defaultValue) {
return value;
}
export function altOptions(value = { code: 9 }) {
return value;
}
console.log(build());
console.log(altBuild());
build.js
import { options, altOptions } from './runner';
const buildParams = {
foo: 'bar',
extra: options(),
}
const altBuildParams = {
foo: 'bar',
extra: altOptions(),
}
export function build() {
console.log(options());
return buildParams;
}
export function altBuild() {
console.log(altOptions());
return altBuildParams;
}
私は希望ランニング出力は次のようになります。
{ code: 42 }
{ foo: 'bar', extra: { code: 42 } }
{ code: 9 }
{ foo: 'bar', extra: { code: 9 } }
しかし、その代わりに、それは次のようになります。
{ code: 42 }
{ foo: 'bar', extra: undefined }
{ code: 9 }
{ foo: 'bar', extra: { code: 9 } }
私はそれを回避することができますが、私はそれが起こっている理由について、本当に好奇心旺盛です。私はこの例を実行するためにNode 7.10とbabel-node 6.26を使用しています。
transpiledコードで更新:循環依存で
transpiled runner.js
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.options = options;
exports.altOptions = altOptions;
var _build = require('./build');
var defaultValue = {
code: 42
};
function options() {
var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultValue;
return value;
}
function altOptions() {
var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { code: 9 };
return value;
}
console.log((0, _build.build)());
console.log((0, _build.altBuild)());
transpiled build.js
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.build = build;
exports.altBuild = altBuild;
var _runner = require('./runner');
var buildParams = {
foo: 'bar',
extra: (0, _runner.options)()
};
var altBuildParams = {
foo: 'bar',
extra: (0, _runner.altOptions)()
};
function build() {
console.log((0, _runner.options)());
return buildParams;
}
function altBuild() {
console.log((0, _runner.altOptions)());
return altBuildParams;
}
翻訳されたコードを見ましたか? –
私はFelixをやったけど、なぜ期待通りに動かないのか不思議に思った。質問を翻訳されたコードで更新します。 –
2つのファイルの間にサイクリック依存関係がある理由は何ですか? –