Ifの評価(VB, JS, PHP, Python)

いきなり結論ですが、VB系だけ他と違うってことです。

以下のサンプルコード、条件文の前半は必ず真、後半はエラーになるものを論理和で評価しています。どちらかが真の場合は条件クリアなので、論理的には"!?"が表示されることになります。

VB

If True Or 1=1/0 Then MsgBox "!?"

Javascript

if (true || 1==1/0alert('!?');

PHP

if (True || 1==1/0echo '!?';

Python

if True or 1=1/0:print('!?')

ここが肝ですが、前半が真と評価された後は後半は実行されない言語がほとんどです。現に、上記 VB 以外は"!?"が表示されます。

VB は条件文をすべて評価してから論理和の評価に入るので、後半がエラーになった場合はスクリプト自体がエラー終了します。回避したい場合は If をネストすることになります。VB の弱点でもあり、愛嬌でもあります。愛嬌。