如何检查函数参数是否未定义?
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。
答案 0 :(得分:4)
在下一个版本中,您将能够使用Defined()特殊功能,它将对undefined进行严格检查(对于空值,它将返回true)。
if Defined(aValue) then
...
在当前版本中,您可以定义一个功能来检查
function IsDefined(aValue : TObject);
begin
asm
@result = (@aValue!==undefined);
end;
end;