return で セミコロンが補完されてしまうのを防ぐ
uupaa.js のビルドツールは、必要な機能のみをビルドすることができます。
//{@mb if (uu.ie) { alert("IE用の特別な処理だよ"); } else { //}@mb alert("IE以外の処理だよ"); //{@mb } //}@mb
このコードを、MobileWebKitモード( {@mb から }@mb までを削除) でビルド
% build/upa.php -mb
すると、次のような形に変化します。
alert("IE以外の処理だよ");
無駄な処理が削れるため、速度も向上しスクリプトも小さくなります。便利ですね。
問題は return + セミコロンの自動補完
return /*{@mb*/ uu.ie ? "IE用の特別な処理だよ" : /*}@mb*/ "IE以外の処理だよ";
このようなコードを build/upa.php -mb でビルトすると、こうなってしまいます。
return "IE以外の処理だよ";
これは
return; "IE以外の処理だよ";
のように return + ; の形で評価されてしまいます。
仕方ないので、この場合はこうしましょう
return ( /*{@mb*/ uu.ie ? "IE用の特別な処理だよ" : /*}@mb*/ "IE以外の処理だよ" );
return (expression); のように、式の前後に ( ) を付けて セミコロン; の自動挿入を阻止してください。