eval
Opera や Safari では、いくつかの形式の間接的な失敗が見られます。
[eval][0]('')
未処理のエラー: 無効なこのオブジェクトで呼び出された eval
空の文字列を評価すると失敗することに注意してください...私が知る限り、それは返されるはずundefined
です。
のような他の形式は、(0,eval)('')
正常に動作するようです。
kangax によるこのテスト スイートの例を実行すると、Opera では「このオブジェクトが無効です」というメッセージで失敗するフォームがいくつか見られますが、Chrome や Firefox ではそうではありません。
なぜこれが起こるのか誰か説明できますか?この動作を決定するものは何ですか? 意図的なようですが、私が知らない標準の一部に準拠していますか?
関連 -間接評価と直接評価に関するSO の議論。