Вы могли изменить заголовок веб-страницы с каждым новым сообщением для предупреждения пользователя. Я сделал это для клиента чата браузера, и большинство пользователей думало, что это работало достаточно хорошо.
document.title = "[user] hello world";
Объявления функций подлежат подъему, и они оцениваются во время синтаксического анализа, подъем означает, что они доступны для всей области, в которой они были объявлены, например:
foo(); // alerts foo
foo = function () { alert('bar')};
function foo () { alert('foo');}
foo(); // alerts bar
Первый вызов foo
выполнит объявление функции , потому что во время синтаксического анализа он стал доступным, второй вызов foo
выполнит выражение функции , объявленное во время времени выполнения .
Для более подробного обсуждения различий между выражениями функций и объявлениями функций, проверьте этот вопрос и в этой статье .
функция testprint является глобальной для страницы. testprint = function ... присваивает переменную, в которой я точно не знаю всю область видимости, но я понимаю, что она не добавлена в словарь таблицы функций, как первая.
Причина № 3 не меняет окно. onload заключается в том, что функции вызываются по ссылке, а не по имени. Когда вы устанавливаете window.onload = testprint
, он назначает ссылку на текущее значение testprint
(дверь № 2, как объяснено CMS) для window.onload
. Изменение значения testprint
позже не влияет на значение window.onload
.
Дверь №4 не отменяет дверь №2 (если, как вы сказали, вы переместите его в первый блок сценария), потому что он находится в другом блоке сценария, поэтому он будет проанализирован после завершения первого блока.