>jrunscript js> var a = undefined; js> if (a == undefined) {println('a == undefined');} js> a == undefined js> if (typeof a == 'undefined') {println("typeof a == 'undefined'");} js> typeof a == 'undefined'後で変数aをnullにしてみて、気が付いた。
js> a = null; js> if (a == undefined) {println('a == undefined');} js> a == undefined js> if (typeof a == 'undefined') {println("typeof a == 'undefined'");} js> (変数aは未定義ではないので、何も出力されない)ちなみに、undefined変数は、Java6付属のRhinoでも書き換え可能だった。
なので、結果が確実そうな(typeof 変数 == 'undefined')を使うとして、文字列比較のパフォーマンスを気にする必要はあるんだろうか?
今はちょっとした書き捨てスクリプトに使っている程度なので、特に問題なさそうだ。
Rhinoのソースファイルを見ると、同じオブジェクト参照同士の同値比較ならJavaの==で片付けてもらえたと思うので、事前に(typeof 変数名)の返す文字列をキャッシュしておいて、以降の比較に使えば速いのかな、とか思ったものの、そんな細工が必要になるほどシビアな使い方をすることは無い...と思う。
0 件のコメント:
コメントを投稿