add(1,2); // returns 3
コード作業罰金以上
が、我々はとしてそれを呼び出す場合:
add(undefined, 2); //throws error
ES6でどのように内部的にパラメータが解析されているのかわからないため、最後にエラーが発生します。 first
のデフォルト初期化子が評価されたときに
add(1,2); // returns 3
コード作業罰金以上
が、我々はとしてそれを呼び出す場合:
add(undefined, 2); //throws error
ES6でどのように内部的にパラメータが解析されているのかわからないため、最後にエラーが発生します。 first
のデフォルト初期化子が評価されたときに
second
がまだ初期化されていない、それがアクセスすることがbeing in scopeにもかかわらず、スローされますtemporal dead zoneではまだです。
あなたは2番目のパラメータはオプションにする必要があります。
function add(first, second = first) { return first + second; }
// and call it as
add(2);
add(2, undefined);
あなたが本当にオプションの最初のものを作りたい場合は、関数本体でそれをしなければならない:
エラーがそれをしないfunction add(first, second) { return first + (second === undefined ? first : second); }
このエラーのために私は立ち往生していません。秒がまだ初期化されていないと言うなら、最初のケースではなぜエラーをスローしないのですか? add(1,2)は素晴らしい作品です!その理由のためだけに、私は働いていて作業していない例をputtedしています。 –
'undefined'(または何もない)以外のものを渡すと、デフォルトのintialiserは全く評価されないので、' second'へのアクセスは起こりませんスローしません。 – Bergi
スロー?エラーメッセージを投稿してください。 – Bergi
エラー:キャッチされていないReferenceError:秒が定義されていません –