2009年12月7日月曜日

なるほどreturnすりゃ止まるんだ

たぶん、分かってる人から見れば今更なエントリ。
var fol=Folder.selectDialog("フォルダを選択");
if(!fol){
alert("処理を中止しました。");
}else{

/*
















*/

}
みたいなコードを書いた事ないだろうか。
前に先輩から「こういう長いカッコ使うのやめなよ」と言われていたのだが、 そのときは実際どうすればいいのかは教わらなかったし、いままでどうするかも思いつかなかった。

ところで、人の書いてるスクリプトを読んでいるとたまに
(function(){
//処理
})();
みたいな感じに、全体をfunctionでつつみこんでそのまま実行しているスクリプトを見る。
この書き方については「組版時間を半減する! InDesign自動処理実例集」の99ページにふれてあって
 これは、各プログラム中で使用されている変数名などで共通のものがあるために、同時にサンプルプログラムを使用する際に干渉しないようにするためのものです。

ということで、functionの中で変数をvar宣言してあればその宣言はその中の範囲にしか適用されない。そういうもんなんだろなと思ってた。

ところがAdobeのサンプルコードを読んでいて、別の効果があることに気づいた。
(function(){
 var fol=Folder.selectDialog("フォルダを選択");
if(!fol){
alert("処理を中止しました。");
return;
}
//処理
})();
returnすればScriptを抜けられる!これで長い{}を書いて、カッコの閉じ忘れを気にしなくてすむ。
なるほどーー、そうかー。

0 件のコメント: