Hatena::ブログ(Diary)

hogehoge @teramako RSSフィード

 | 

2012-01-04

console.log は printf 相当の機能が一部ある


何気なく書かれているけど、console.log('got %s', foo);という部分があり、おや?と思った。

もしかして、Node.js 以外でも使えたりする? と調査。

まず、Operaは使えなかったので除外。

CodeGoogleChormeFirefox
console.log("%s", "hoge")hogehoge
console.log("%s", "hoge", "foo")hoge foohoge foo
console.log("%s", "hoge", {foo:"FOO"})hoge ▸Objecthoge ({foo:"FOO"})
console.log("%d", 10)1010
console.log("%d", 10.5)10.510
console.log("%f", 10.5)10.510.5
console.log("%d", "hoge")hogeNaN
console.log("%%", "hoge")% hoge%% hoge
console.log("%o", 100)100100
console.log("%x", 100)[object Object]%x 100
console.log("%g", 100)[object Object]%g 100

な感じ。%03dとか桁あわせ相当のものはChromeにもFirefoxにもなかったので載せていない。

まとめ

  • 共通
    • %s が安定して使える
    • 余った引数はそのまま後続に付加される。
    • 余談だが、オブジェクト等を出力したいときは文字列化せずに複数引数にした方がデバッグに役立つ(後で展開できるため)
  • GoogleChrome
    • 使うなら %s のみにしておけ。
      • %d, %f などはどのみち文字列として評価されているっぽい雰囲気
    • %% を % に変換してくれる
    • 未対応のもの(?)は何故か[object Object]になる
  • Firefox
    • %d なら整数値、%f なら小数点も含めて、と評価してくれる
    • %% はそのまま %%
    • 未対応のものはそのまま出力

まあブラウザ間でまちまちなので、どれも共通した出力を望む場合は使わない方が無難そう。

追記

id:Syunpei さんが console オブジェクトの標準化について言及してた。

takano32takano32 2012/01/04 20:39 !?

書きかけ?

teramakoteramako 2012/01/04 21:04 失礼しました。hatena.vimを使って最初書いて :w したらいきなり送信されてしまったのですw

takano32takano32 2012/01/05 04:04 ナルホディウス!

ってか、日記のテーマかっけー!

tyrutyru 2012/01/06 19:25 >id:teramako
hatena.vimにpull req送って取り込まれたので
.vimrcにlet g:hatena_upload_on_write = 0
すれば:HatenaUpdateか:HatenaUpdateTrivial以外では投稿されなくなります。
https://github.com/motemen/hatena-vim/pull/3

teramakoteramako 2012/01/06 19:46 うはっwwありがとうございます!!

aaaaa!aaaaa! 2013/12/23 19:51 Google Chromeで
console.log('%d','hello');
> NaN
console.log('%cabc','color:blue');
> abc(青色)

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

リンク元
 |