Django 3 на примере bookmarklet_launcher.js
Следующий кусок кода в книге Django 3 на примере мы можем использовать для закладки в браузере и при нажатии на закладку, код в ней будет выполнен. Кто-нибудь может помочь мне понять этот код?
(function(){ if (window.myBookmarklet !== undefined){ myBookmarklet(); } else { document.body.appendChild(document.createElement('script')).src='https://127.0.0.1:8000/static/js/bookmarklet.js?r='+Math.floor(Math.random()*99999999999999999999); } })();
- Why do we need to put the function inside parenthesis? (function.....)()
- How the browser executes the code. We put a javascript tag at the start of the code.
JavaScript:(function.....)() - what is this function myBookmarklet() and when if statement will be actually executed? How will the window object have myBookmarklet property?
Любые релевантные ресурсы будут оценены по достоинству. Большое спасибо
Потому что это анонимная функция, у нее нет имени. Поскольку она не имеет имени и должна быть выполнена, ее нужно обвести круглыми скобками, чтобы ее можно было запустить, вызвав ее с помощью
()
в конце.Именно так. Если вы хотите написать функцию, которая не будет нужна ни в каком другом месте, вы можете определить ее без имени, чтобы она была анонимной. Чтобы вызвать ее, см. 1.
.Перед этим js-кодом HTML-файл, вероятно, имеет ряд тегов
<script>
, где он определяет определенные зависимости, в данном случае javascript-файлы. Один из этих js-файлов назначилmyBookmarklet
наwindow
, вот так:window.myBookmarklet = //... a function definition
. Код, который вы опубликовали, проверяет наличиеwindow.myBookmarklet !== undefined
перед вызовом этой функции.