Home > JavaScript > 文字列比較 – JavaScript: The Good Parts

文字列比較 – JavaScript: The Good Parts

いつだったか、この blog にも何度か登場している Mauvis に勧められて購入した “JavaScript: The Good Parts ―「良いパーツ」によるベストプラクティス” は原書で何度か読みました。なんだか翻訳が最近出たそうなのですが(訳の問題はわかりませんが)、これはお勧めです。すごく薄いけど、気付かされることがすくなくとも、僕には沢山ありました。しばらくこの本から学んだことをいくつか紹介していきたいと思います。

最初は String の比較です。

以下の expression は共に true と評価されます。

('cat' == 'c' + 'a' + 't') // true
('cat' === 'c' + 'a' + 't') // true

この本を読むまでは、JavaScript はなんとなくインスタンスベースの比較をしてるのかなぁと思ってました。それはつまり、等号( == あるいは === )の左右両辺にが全く同じメモリアドレスを指し示している時だけ、true と評価される、ということです。しかし実際には、String の比較時はその文字列の内容を評価していました。

var s1 = s2 = 'foo';
var s3 = 'foo';
s1 == s2; // true
s1 == s3; // still true, of course.

従って、もし万が一、インスタンスで文字列を比較したい場合は、以下のようにするといいでしょう。

var s4 = new String('foo');
var s5 = new String('foo');
s4 == s5 //false

しかし本の中になんども登場する通り(そして僕も強く同意しますが)、Wrapper Object (String, Number そして Boolean) は混乱の元です。必要となるシチュエーションもあまり想像できません。

ところでインスタンスベースの文字列比較、というのはもうあまりポピュラーではないんでしょうか?僕が多分最初に Java を学んだときはインスタンスベースの比較だったような気がしたのですが、今試してみたら (1.5.0_16 on Intel Mac) 内容で比較していますね。PHP も同じようです。

Comments:0

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://blog.nydd.org/2008/12/%e6%96%87%e5%ad%97%e5%88%97%e6%af%94%e8%bc%83-javascript-the-good-parts/trackback/
Listed below are links to weblogs that reference
文字列比較 – JavaScript: The Good Parts from Vantage Point of Queens

Home > JavaScript > 文字列比較 – JavaScript: The Good Parts

Search
Feeds
Meta
Links
Ads!

Return to page top