Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

ブックマークレットでの困った集

More than 1 year has passed since last update.

ブックマークレットを作っていて困ったことをメモしていきます。壁に当たった時に追記していくスタイルでいきます。

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)})();

実行結果

image.png

image.png

原因

%10 がURLに入ると、ブラウザがURLエンコードされた文字として扱ってしまい正しく解釈されないから。%2から%9までならうまくいく(chromeブラウザの場合)。

解決方法

剰余演算子の%を%25にエンコードする。見かけ上は%2510になるが2510で割るわけではない。
i % 10 == 0 ではなく、i % val == 0 のように何かの変数で割るようにする。単純にやりすぎるとclosure compilerが気を利かして%10に置き換えてしまうので注意
10以上で割るコードを書かない。

kanaxx
めんどくさい作業は全てブックマークレットで解決したい
https://kanaxx.hatenablog.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away