JavaScript の関数のコードを文字列として表示する

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