Maison  >  Questions et réponses  >  le corps du texte

javascript - Déclaration de fonction JS et expression de fonction

`alert(sum(10,10));
var sum=function(num1,num2){

   return num1+num2;

};`
Pourquoi l'erreur est-elle signalée ? N'y a-t-il pas de promotion variable ?

世界只因有你世界只因有你2663 Il y a quelques jours859

répondre à tous(4)je répondrai

  • phpcn_u1582

    phpcn_u15822017-07-05 10:57:27

    Lorsque nous écrivons du code js, nous avons deux manières d'écrire, l'une est l'expression de fonction et l'autre est la déclaration de fonction.
    Ce sur quoi nous devons nous concentrer est :

    Seuls les formulaires de déclaration de fonction peuvent être promus.

    1. Formulaire de déclaration de fonction [Succès]

    function myTest(){ 
        foo(); 
        function foo(){ 
            alert("我来自 foo"); 
        } 
    } 
    myTest();
    

    2. Méthode d'expression de fonction [Échec]

    function myTest(){ 
        foo(); 
        var foo =function foo(){     // 看这里
            alert("我来自 foo"); 
        } 
    } 
    myTest();
    

    Lisez mon article : http://www.jianshu.com/p/85a2...

    répondre
    0
  • 扔个三星炸死你

    扔个三星炸死你2017-07-05 10:57:27

    Les expressions de fonction ne sont pas hissées.

    Lisez à nouveau « Programmation avancée Javascript ».

    répondre
    0
  • phpcn_u1582

    phpcn_u15822017-07-05 10:57:27

    La déclaration et l'expression sont différentes. Si vous déclarez, non seulement la définition sera faite à l'avance, mais l'affectation sera également faite à l'avance, mais pas l'expression.

    a();
    function a(){}; //等同于
    var a = function(){};
    a();
    ///////对于表达式有
    a();
    var a = function(){}; //等同于
    var a;
    a();
    a = function(){}; //简单来讲就是表达式的赋值必须要等程序运行到相关行的时候才会进行

    répondre
    0
  • ringa_lee

    ringa_lee2017-07-05 10:57:27

    Comme ci-dessus, votre méthode de création de fonction est sous forme littérale de fonction, remplacez-la par

    alert(sum(10,10));
    function sum(num1,num2){
        return num1+num2;
    }

    C'est ça

    répondre
    0
  • Annulerrépondre