JavaScript の関数を文字列として出力する方法。下コードのとおり toString を使う。
function myFunction(a, b) { return a + b; } const text = myFunction.toString() console.log(text); // function myFunction(a, b) { // return a + b; // }
文字列から関数をつくる
eval という危険な関数を使うと、文字列から関数を生成できる。
function greet(name) { return `Hello, ` name } const evalGreet = eval(`(` + fnString + `)`) console.log(evalGreet("太郎")) // Hello, 太郎!
カッコで囲むのがポイント。カッコで囲まないとエラーが起きる。
function greet(name) { return `Hello, ` name } const fnString = greet.toString() const evalGreet = eval(fnString) // TypeError: evalGreet is not a function
正解はこちら。
function greet(name) { return `Hello, ` name } const fnString = greet.toString() const evalGreet = eval(`(` + fnString + ``) // TypeError: evalGreet is not a function