Я новичок в Javascript и смущен тем, как работает объявление функции. Я сделал несколько тестов и получил некоторые интересные результаты:
say();
function say()
{
alert("say");
}
Продвинутая декларация работала и всплывала "say"
Напротив
say();
say = function()
{
alert("say");
}
не работает, хотя он также объявляет объект функции
Если мы объявим функцию и redeclare, то потом:
function say()
{
alert("speak");
}
say();
function say()
{
alert("say");
}
Я сказал "сказать" вместо "говорить" . Этот сюрприз!
OK. Кажется, что работает только последнее объявление функции. Затем давайте сначала объявим объект функции, а затем "регулярную" функцию:
say = function()
{
alert("speak");
}
say();
function say()
{
alert("say");
}
say();
Еще один сюрприз: "говорить" , а затем "говорить" . Объявление "обычной" функции вообще не срабатывало!
Есть ли объяснение всех из них? И, если "регулярное" объявление функции действительно является "хрупким" и может быть легко переопределено объектом функции с тем же именем, следует ли мне держаться подальше от этого?
Другой вопрос: только с форматом объектного объекта эта декларация становится невозможной? Есть ли способ "имитировать", что в Javascript?