プログラム言語の奇妙な特徴
stackoverflowにちょっと面白いquestionがあったので眺めてました。
プログラミング言語の奇妙な特徴を教えてね、というもの。
strangest-language-feature
http://stackoverflow.com/questions/1995113/strangest-language-feature
見た感じjavascriptについての回答にvote数が多いようですね。
さすがjs。
==の挙動がおかしいだろってのとか
'' == '0' // false 0 == '' // true 0 == '0' // true false == 'false' // false false == '0' // true false == undefined // false false == null // false null == undefined // true " \t\r\n" == 0 // true
+の挙動がおかしいだろってのとか
'5' + 3 // '53' '5' - 3 // 2
この辺はJavaScript The Good Partsでも悪いパーツ/ひどいパーツとして紹介されてますね。
JavaScript: The Good Parts ―「良いパーツ」によるベストプラクティス
- 作者: Douglas Crockford,水野貴明
- 出版社/メーカー: オライリージャパン
- 発売日: 2008/12/22
- メディア: 大型本
- 購入: 94人 クリック: 1,643回
- この商品を含むブログ (189件) を見る
あとjavaのこれも個人的に面白かったです。
Integer foo = 1000; Integer bar = 1000; foo <= bar; // true foo >= bar; // true foo == bar; // false //However, if the values of foo and bar are between 127 and -128 (inclusive) //the behaviour changes: Integer foo = 42; Integer bar = 42; foo <= bar; // true foo >= bar; // true foo == bar; // true
なぜこうなるかはInteger#valueOfのコードを読むとわかります。
上記のページで紹介されてますので、興味のある方はどうぞ