there is no way, your code will work like you want.
here is the 'correct' one.

Code:
  #CaptureWhois on
  raw 311:*: { set %WhoIsResults $1- }
  raw 318:*: {
    if ( %WhoIsResults ) { echo -a $2 is Online }
    else { echo -a $2 is Offline }
    .disable #CaptureWhois
  }
  raw 401:*: { unset %WhoIsResults }
  #CaptureWhois end

  alias IsOnline {
    if ( $1 == $null ) { return $false }
    unset %WhoIsResults
    .enable #CaptureWhois
    whois $1
  }

  alias test { IsOnline Loki1 }


but, instead use above code with /whois command, you should try
/ison command. usage: /ison <nick> [nick] [nick] [...]

Code:
  raw 303:*: {
    if (%IsOnline) {
      if ($istok($1-,%IsOnline,32)) { echo -a %IsOnline is Online }
      else { echo -a %IsOnline is Offline }
      unset %IsOnline
    }
  }
  alias IsOnline {
    if ( $1 == $null) { return $false }
    set %IsOnline $1
    ison $1
  }
  alias { test IsOnline Loki1 }


Charlie