如何檢查函數參數是否未定義?檢查SmartMS中的函數參數是否未定義?
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;
然而,當調用此函數在純JS沒有PARAM, 然後安勤=未定義,但<>零檢查被轉換爲== 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);
人們現在依賴於jQuery的,如果「測試」之稱與一個參數或不。
如果以這種方式聲明Test,則不能調用Test() - 它將不會編譯。你最近想做什麼? – gabr
@gabr:在Smart中你不能調用Test(),這是正確的。但是你可以使用「Test」作爲JS回調函數,並且該函數可以執行這個回調函數而不需要任何參數! –
現在它是有道理的。 – gabr