どもです。
例えばセレクタを書き間違えるなどで指定の要素が存在しなかった場合、undefinedが返されます。
プルダウンの選択状態が解除されてしまった場合、valはnullになります。
そんな感じでjsで「入力値がある場合」をチェックしようとすると、undefinedやnullが来る可能性を考慮しなければなりません。
いやundefinedは正しく動いているなら来ない可能性が高いですが、nullくらいは考慮しておきましょう。
null != 0 //TRUE
undefined != 0 //TRUE
null > 0 //FALSE
undefined > 0 //FALSE
null >= 0 //TRUE
undefined >= 0 //FALSE
null //FALSE
undefined //FALSE
'' //FALSE
0 //FALSE
'0' //TRUE
'0' != 0 //FALSE
'1' != 0 //TRUE
'0' > 0 //FALSE
'1' > 0 //TRUE
うわ面倒臭っ
何が面倒って if('0') がtrueなところです。jsで入力値を回収したら文字列型で来るのに。
ということで、キャストしないなら(変数 a の場合)
//値なしが「0」の場合
if( a > 0 )
または
//値なしが空白の場合
if( a )
って感じの結論になります。