javascript - Je vois une fonction dans la section de déclaration de fonction et je ne la comprends pas très bien.
我想大声告诉你
我想大声告诉你 2017-07-05 10:38:34
0
4
800

Ceci est un exemple de l'élévation js ci-dessus
Voyez que la déclaration de fonction a un code

if(condition){
    function sayHi(){
        alert('hi')
    }
}else{
    function sayHi(){
        alert('Yo')
    }
}

On dit que ce code a une syntaxe invalide. La plupart des navigateurs renverront la deuxième instruction et Firefox renverra la première instruction. Pourquoi ?
S'il peut être modifié en une forme d'expression de fonction, pourquoi ?

var sayHi;
if(condition){
    sayHi=function(){
        alert('Hi')
    }
}else{
    sayHi=function(){
        alert('Yo!')
    }
}
我想大声告诉你
我想大声告诉你

répondre à tous(4)
黄舟

Parce que la première est une déclaration de fonction, mais les fonctions ne sont généralement pas déclarées dans if-else

La seconde consiste à attribuer la fonction anonyme à la variable. La promotion n'existe pas

.
黄舟

L'écriture directe de la fonction xxx(){} entraînera une déclaration anticipée. S'il existe deux fonctions de ce type portant le même nom, cela équivaut à exécuter var xxx deux fois en haut, elle n'est donc pas valide

伊谢尔伦

Cela n'a rien à voir avec le préfixe de déclaration. À cette époque, les spécifications JavaScript étaient encore ES5, les navigateurs n'avaient pas encore implémenté la portée au niveau du bloc (ES2016+) et le niveau de la portée était uniquement au niveau de la fonction. Alors tu l'as écrit

if(condition){
    function sayHi(){
        alert('hi')
    }
}else{
    function sayHi(){
        alert('Yo')
    }
}

et écrit par

function sayHi(){
  alert('hi')
}
function sayHi(){
  alert('Yo')
}

Pas de différence essentielle

洪涛

js est déclaré à l'avance ! ! ! La fonction sera directement mentionnée en haut du scope lors de sa déclaration. Il n'y a pas de portée dans if, donc les deux fonctions constituent une seule portée et la seconde remplacera la première. ! Quant à votre deuxième code, vous déclarez d'abord la variable sayhi, puis attribuez la valeur à sayhi après le jugement if,

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal