ブックマークレットを作っていて困ったことをメモしていきます。壁に当たった時に追記していくスタイルでいきます。
Uncaught SyntaxError: Invalid or unexpected token が発生
2018/7/9
10で割りたいだけなのに、うまく動かなかった。
コード
javascript:(
function(){
for( i=0; i<100; i++){
if( i % 10 == 0 ){
console.log(i);
}
}
}
)()
Closure compilerのコード
(function(){for(i=0;100>i;i++)0==i%10&&console.log(i)})();
実行結果
原因
%10
がURLに入ると、ブラウザがURLエンコードされた文字として扱ってしまい正しく解釈されないから。%2から%9までならうまくいく(chromeブラウザの場合)。
解決方法
剰余演算子の%を%25にエンコードする。見かけ上は%2510になるが2510で割るわけではない。
i % 10 == 0
ではなく、i % val == 0
のように何かの変数で割るようにする。単純にやりすぎるとclosure compilerが気を利かして%10に置き換えてしまうので注意
10以上で割るコードを書かない。