LoginSignup
0
1

More than 5 years have passed since last update.

JavaScriptで console.log(1+1); //2 という形式の文字列を得る方法

Last updated at Posted at 2017-09-29

な… 何を言っているのか わからねーと思うが

俺も一体何を書きたいのか、わからなかった。

とりあえず、あ・・・ありのまま、今書いたソースを伝えるぜ!


<!DOCTYPE html>
<html lang="ja"><head>
  <meta charset="utf-8">
<script>

  var consoleLogComment = function(str) { 
    var result = (new Function('return ' + str + ';'))()
    return 'console.log(' + str + ');  //' + result;
  };

  var copyText = '';
  copyText += consoleLogComment("1+1");
  copyText += '<br />';
  copyText += consoleLogComment("parseInt('020')");
  copyText += '<br />';
  copyText += consoleLogComment("parseInt('020', 10)");
  copyText += '<br />';
  copyText += consoleLogComment("parseInt('020', 8)");
  copyText += '<br />';
  copyText += consoleLogComment("parseInt(020, 10)");
  copyText += '<br />';
  copyText += consoleLogComment("parseInt(020, 8)");
  copyText += '<br />';

  document.write(copyText)

</script>
</head><body>
</body></html>

※コメント欄で教えていただきました。もっと短くかけるって。

  const consoleLogComment = (s) => `console.log(${s}); // ${eval(s)}`

これで得られる結果は、これだ。

console.log(1+1); //2
console.log(parseInt('020')); //20
console.log(parseInt('020', 10)); //20
console.log(parseInt('020', 8)); //16
console.log(parseInt(020, 10)); //16
console.log(parseInt(020, 8)); //14

ここで、parseIntは関係ねえ。

console.log(何か) //何かの答え

この形式で、文字列が取得できるってことだ。
JavaScriptの本とかでよく見かける、この形式のソースコードだ。

頭がどうにかなりそうだった…
そんなチャチなもんじゃあ 断じてねえ
もっと恐ろしいものの片鱗を 味わったぜ…

ということで、

いちいち、console.logの出力内容をコピーして、//以降に記述しなくても、consoleLogComment を使うと、そのソース文そのものが文字列として手に入るって仕組みです。

コードを公開したい人(俺とかおまえとか)には、役に立つような気がしました。

どうぞ。

0
1
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1