Я заметил, что, по-видимому, существует несколько немного разных синтаксисов для загрузки js-файлов асинхронно, и мне было интересно, есть ли разница между ними, или же они оба в значительной степени работают одинаково. Я предполагаю, что они работают одинаково, но просто хотели убедиться, что по какой-то причине один метод не лучше другого. :)асинхронный синтаксис загрузки файла .js
Метод Один
(function() {
var d=document,
h=d.getElementsByTagName('head')[0],
s=d.createElement('script');
s.type='text/javascript';
s.src='/js/myfile.js';
h.appendChild(s);
})(); /* note ending parenthesis and curly brace */
Второй метод (пила это в коде Facebook,)
(function() {
var d=document,
h=d.getElementsByTagName('head')[0],
s=d.createElement('script');
s.type='text/javascript';
s.async=true;
s.src='/js/myfile.js';
h.appendChild(s);
}()); /* note ending parenthesis and curly brace */
Круто, спасибо. Разве s.asynch = true бессмысленно в этом случае, поскольку скрипт вводится в главный тег? И что касается синтаксиса в скобках: (function() {...})(); vs: (function() {...}()); - Это почти одинаково? – taber
@taber: Да, синтаксис скобок достигает той же цели. т.е.: функция вычисляется как выражение функции вместо оператора функции. См. Http://stackoverflow.com/questions/440739/what-do-parentheses-surrounding-a-javascript-objectfunctionclass-declaration/442408#442408 и http://stackoverflow.com/questions/1634268/explain-javascripts- encapsulated-anonymous-function-syntax/1634321 # 1634321 (особенно последний комментарий). –
@taber: Я не думаю, что факт, что он вставлен в '
', имеет значение. (Но у меня нет ссылок или тестов, чтобы поддержать это). –