他の回答は、当面の問題に対する代替解決策を提案する良い仕事をしているので、あなたが尋ねたより大きな質問を見て、evalの問題について詳しく書いた賢い開発者の言葉にあなたを導きます.
を見るeval
と、周囲のコードに暗雲が立ち込め、その使用が正当であると納得するまで、疑念と不信感を持って全体の混乱に目を向けます。
[...]
eval
というのは悪い考えです。なぜなら、それが使用されているのを見るたびに、予期せぬ不必要な問題を引き起こしてきたからです。
重要なビットは、「予期せぬ」と「不必要」です。それに関連する警告が膨大に山積みeval
されているため、予期せぬことであり、考えずにはリスト全体を思い出すことさえできません. 代替手段は実装するのにそれほど多くの作業を必要としない傾向があるため、不必要です。一方、によって引き起こされる問題は微妙で悪質です。eval
eval
[...]
eval
微妙なセキュリティと変換の問題がたくさん発生し、バイトコードのキャッシングが無効になり、実行時まで構文やその他のエラーが隠され、追跡が困難な距離でアクションが発生し、構文の強調表示が無効になるため、これは良くありません。コードを悪化させるだけです。
eval()
ユーザー入力にさらされないようにしたと言います。すごい!それは良い第一歩ですが、引用が言及しているように、それはあなたが考えなければならないことのリストの終わりではありませんeval()
. この答えとあなたがまとめた他の答えをもたらしたのは、それeval()
が偽りの経済であるということです。少なくとも、技術的負債の発生です。eval()
最適化と同様に、「使用すべきか?」に対する 2 つの答えです。「すべきではない」と「まだすべきではない」です。