Proxy
が割り当てをトラップし、それを確認しない場合、厳密なモードの場合TypeError
がスローされます。しかし、私はプロキシを悪用しようとしており、その代わりにReferenceError
が必要です。代替プロキシ例外
2回目の呼び出しでReferenceError
を取得するにはどうすればよいですか?
var code = `
try {
a = 1;
console.log("Ok");
} catch (e) {
console.log(e.name);
}
`;
var p = new Proxy({a:undefined}, {set(){}});
with (p) (function() { eval(code); })(); // Ok
with (p) (function() { 'use strict'; eval(code); })(); // TypeError
(function() { 'use strict'; eval(code); })(); // ReferenceError
PS:そのような変数a
が存在しない場合にのみ起こるReferenceError
Same question in Russian.
「新しいReferenceError(...)」をスローするのは機能しますか? – Ryan
「確認しない」とはどういう意味ですか? – Bergi
@Ryan、どのような場所ですか?呼び出し元が厳密なモードになっている場合にのみエラーが必要です。そうしないと何も起こりません。そして 'code'は変更してはいけません。 – Qwertiy