检查SmartMS中是否未定义功能参数?

时间:2012-05-22 13:58:27

标签: smart-mobile-studio

如何检查函数参数是否未定义?

procedure Test(aValue: TObject);
begin
  if aValue <> nil then
    ShowMessage('param filled')      <-- also when Test() is executed!
  else
    ShowMessage('no param filled')   <-- not called, only when Test(nil) is called
end;

然而,当在没有param的纯JS中调用此函数时, 然后aValue = undefined,但是&lt;&gt;零检查转换为== null!

例如,当你有一个带回调函数的JS函数时:

type
  TObjectProcedure = procedure(aValue: TObject);

procedure FetchUrlAsync(aUrl: string; aCallback: TObjectProcedure )
begin
  asm
    $().load(@aUrl, @aCallback);
  end;
end;

您可以使用以下方式调用此函数:

FetchUrlAsync('ajax/test.html', Test);

如果使用param调用“Test”,它现在依赖于jQuery。

1 个答案:

答案 0 :(得分:4)

在下一个版本中,您将能够使用Defined()特殊功能,它将对undefined进行严格检查(对于空值,它将返回true)。

if Defined(aValue) then
   ...

在当前版本中,您可以定义一个功能来检查

function IsDefined(aValue : TObject);
begin
   asm
      @result = (@aValue!==undefined);
   end;
end;