2009-10-08 JavaScriptエンジンの違い Safari/Firefox/ChromeはJavascript Engineが違うこともあり、やっぱり微妙に挙動が違う。今日ハマったのはこれ。 top。top というglobal変数は Safariは普通にユーザ定義変数として使える Firefoxではwindowに関するObjectとして使われている。が上書きが可能。 Chromeでは空の Object として使われている Chromeではユーザが自分で var top として定義しても上書きはされず、空のObjectとして常に扱われる。従って、var top="hoge"; console.log(top + "blah");と書くと、 Safari: hoge:blah Firefox: hoge:blah Chrome: [object global]:blah となる。