Начитался вики, сразу пришёл в голову такой код:
(function(){return '(' + arguments.callee.toString() + ')()'})()
...более строгое условие: программа не должна пользоваться трюками, позволяющими получить доступ к своему исходному коду, хранящемуся в памяти загрузчика или интерпретатора
Так вот, трюк это, или не трюк? И если придираться к словам, код в памяти не хранится, хранится только объект функции у которого есть метод возвращающий строку.
Погуглил, нашел пару реализаций с htmlом, что-то почти нечитаемое и аналогичную моей, но чёткого ответа не нашёл.