エンジニアのひよこ_level10

【毎日更新!】新卒3年目エンジニアブログです!

【JavaScript】(0, eval)("x + y")でグローバルスコープでJS実行【818日目】

グローバルスコープでJSを実行したい

別スコープ内で文字列でスクリプトを保持しているが、そのスクリプトはグローバルスコープで実行したい時。

例えば、外部からJSを取得して文字列で持った。
それには汎用的な関数を定義してあった。関数の再利用をしやすくしたいとか。

それを他で使うためにはグローバルスコープで実行して、定義してやりたい。

(0, eval)

(0, eval)("x + y")

これで、"x + y"というスクリプトがグローバルスコープで実行される。

funcなどの変数に、文字列としてスクリプトを用意すると、こんな感じになる

// funcにスクリプトを入れる

(0, eval)(func)

これで、グローバルスコープでfuncが実行される。