普通は引数によって渡された値を変更しても、元の値は変わりませんが、幾つかの値は呼び出し側の値をハンドラの中で書き換える事ができます。
具体的には、リスト、レコード、日付、ハンドラ、スクリプトオブジェクトです。
set x to (current date)
a(x)
x
on a(handlerX)
set year of handlerX to 1900
end a
結果を見てみると変数xの値は、ハンドラの中で属性を使って変えると、呼び出し側の値も変わっています。
set x to {1,2,3,4}
a(x)
x
on a(handlerX)
set item 2 of handlerX to 10
end a
結果を見ると変数xの値が変わっています。このように変数そのものの値を変えるのでは無く、その要素や属性を変更した場合、もとの変数の値も変更されます。
これを利用すれば、リストやレコードを引数に使うことで、return文を使わずに値をハンドラから返すことができます。