2017-09-14 2 views
1

にエラーがスローされます。 WebPACKのsourcemapsで作業する場合、私はこのつまずい評価は、だから私はES6デフォルトパラメータを使用するコードのこの完全に合法的な作品を持って適切なES6コード

ReferenceError: Can't find variable: foo

(:

eval('const foo = 5; function test(bar = foo) { return bar }; test();'); 

次のエラーをスロー:これと同様に、評価関数内で使用されるコードの同じ部分が、しかし

eval-source-map)は、このようにevalでラップされたコードを生成し、生成されたバンドルを分割します。

私はこの不一致をなぜ疑っていましたか? 10.1.2

+2

Safari 11で動作するように思われます。 – pvg

+0

'const' /' let'キーワードに関連するバグのようです。 Safari 10の 'var'で動作するように見えます。 –

+0

@PatrickKunkaはい、varで動作しますが、ブロックスコープの変数に問題があるようです – Kicu

答えて

0

V Safariでテストさ

ブロックスコープconst/letの使用に関連するバグ、およびコードは、グローバルスコープで評価されているという事実であるように見えます。

私は2つの回避策を見つけた:

1:

eval('var foo = 5; function test(bar = foo) { return bar }; test();'); 

2:varを使うconstを使用しますが、クロージャ内で実行されます。たとえば、IIFE内の同じコードが動作しているように見えます。

eval('(function(){const foo = 5; function test(bar = foo) { return bar }; return test();})()'); 
関連する問題