Две причины:
загрязнение
Первый - для предотвращения глобального загрязнения любой из переменных, необходимых для букмарклета. Использование замыкания означает, что var a
не добавит window.a
в глобальный контекст. Кроме того, использование именованной функции добавит ее в глобальное пространство имен. function a() {...}
добавит window.a
.
случайный отдых DOM
Второй - избежать случайного воссоздания DOM путем возврата строки. Любой javascript:
URL, по которому возвращается строка, создаст новый DOM, используя содержимое строки в качестве источника.