hako584 2012-08-16 06:46:11

[JavaScript] -1 is true なんです。 このエントリーをはてなブックマークに追加

投稿者からのアピールポイント

indexOf が悪いのか、 -1 を true と扱う仕様が悪いのか、たんに私の書き方が悪いのか…。 自分のだけじゃなくて他人の間違いもよく見ます。

if(navigator.userAgent.toLowerCase().indexOf("windows")){
   windowsFunction();
} 
if(navigator.userAgent.toLowerCase().indexOf("iOS")) {
   iOSFunction();
}

if(navigator.userAgent.toLowerCase().indexOf("mac")) {
   //...
}
if(navigator.userAgent.toLowerCase().indexOf("android")) {
   //...
}

使い方ヒント: 「これは臭う」という行を見付けたら、各行のsmellをクリックしてマーキングしておきましょう(要Twitter OAuth認証)

コメント(7)

#1 kuma056 2012-08-16 10:30:50  

navigator.userAgent.toLowerCase().indexOf("iOS") これって常に-1じゃないかな

#3 customX_156 2012-08-16 18:24:05  

見つかったかどうかじゃなくて位置を返すメソッドでしょ?位置のみを条件式に単体で突っ込むのって、仮に正しく動いたとしても意図が伝わらないコードだと思うけどな。

#4 diaqt 2012-08-22 04:52:53  

str.indexOf(q) !== -1 よりは /q/.test(str) って書きたい.ていうか indexOf を文字列が存在するかを調べるのに使うのはいくない

#5 math_neko 2012-08-22 04:59:09  

何が悪いかって聞かれたら、これは「貴方の書き方が悪い」としか。indexOf の意図された使い方ではないよね。あと非零の整数が true 扱いなのは割とどの言語でも常識(Ruby は例外で 0 も true 扱い)。

#6 __DaLong 2012-08-22 14:30:55  

先頭から一致するときには indexOf が 0 を返して処理がスキップされるのでは?

#7 S_F__ 2013-12-01 15:41:49  

~indexOfが好き。

コメント投稿には、twitter認証が必要です。

Twitter認証

このウンコードに臭った人は、こちらのウンコードにも臭ってます

[JavaScript] とっても長いswitch/case文

このエントリーをはてなブックマークに追加

配列変数を全く理解できていなかった。

var rnd = Math.floor(Math.random() * 128...

鑑賞する »

[Java] 連番

このエントリーをはてなブックマークに追加

もはや人間が読むものではない。

...

package com.renban.erq053.czp008;

/**...

鑑賞する »

[Java] フルHD推奨。

このエントリーをはてなブックマークに追加

画面の左側がわりと無駄な気がします。

public int hoge(){
    int result = 0;
...

鑑賞する »