106 votes

Que se passe-t-il si je ne passe pas de paramètre dans une fonction Javascript ?

Je suis nouveau dans le monde du Javascript et je bricole en écrivant des fonctions très basiques. Je suis tombé par hasard sur l'exemple ci-dessous et je ne sais pas pourquoi il fonctionne alors que je ne passe pas de paramètre lorsque la fonction le demande.

Fonction d'échantillon

function myfunction(x) {
    alert("This is a sample alert");
}

Maintenant, si j'appelle la fonction myfunction(); L'alerte m'est présentée. Comment se fait-il que je puisse appeler la fonction sans aucune erreur ni avertissement alors que je n'ai pas passé de paramètre ?

EDITAR

Je ne m'attendais pas à autant de bonnes réponses et je ne suis pas encore en mesure de dire quelle est la meilleure réponse. Je peux donc demander aux gens de suggérer la meilleure réponse et j'attribuerai l'acceptation à cette personne.

1voto

David Thomas Points 111253

Parce qu'il n'y a pas d'erreur tant que la fonction ne s'attend pas à pouvoir travailler avec le paramètre que vous êtes censé passer.

Par exemple :

function myfunction(x) {
    return x*2;
}

Lancerait une erreur, bien que probablement seulement une NaN (dans ce cas) ou un variable is undefined .

0voto

Kendall Frey Points 19670

Si vous omettez l'argument, sa valeur sera undefined . Cela vous permet de créer des paramètres facultatifs assez facilement.

Une autre fonctionnalité est la possibilité de définir une fonction sans paramètres, et de l'appeler avec des arguments avec succès, en utilisant la fonction arguments objet. Cela vous permet de créer facilement des tableaux d'arguments de longueur variable.

0voto

Goyal Vicky Points 871

En javascript console.log à l'intérieur d'une fonction donne undefined comme sortie pour les paramètres non passés mais en dehors de la fonction il donne l'erreur not defined car à l'intérieur d'une fonction les navigateurs déclarent explicitement la variable. Par exemple

console.log(x) 

donne VM1533:1 Uncaught ReferenceError : x n'est pas défini alors que

function test(x) {
console.log(x)
}
test(); 

donne indéfini. C'est parce que la fonction test() est réécrite par le navigateur comme :

function test(x) {
    var x;
    console.log(x)
    }

Un autre exemple : -

var x =5 ;
function test(x) {
console.log(x)
}
test(); 

est toujours indéfini car la fonction devient

function test(x) {
    var x;
    console.log(x)
    }

L'alerte dans l'exemple ci-dessous donnera undefined :-

    var x =5;
    function test() {
    alert(x);
    var x =10;
    }

test(); 

La fonction ci-dessus deviendra :-

 function test() {
    var x;
    alert(x);
    x =10;
    }

La portée de la variable javascript à l'intérieur d'une fonction est au niveau de la fonction et non du bloc. Par exemple

function varScope() {

for(var i = 0; i < 10; i++){
    for(var j = 0; j < 5; j++){}
        console.log("j is "+j)
    }
    console.log("i is "+i);

}
varScope();

donnera comme résultat :

j is 5 
i is 10

Encore une fois, la fonction est devenue :-

  function varScope() {
    var i;
    var j;
    for(i = 0; i < 10; i++){
        for(j = 0; j < 5; j++){}
            console.log("j is "+j)
        }
        console.log("i is "+i);
    }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X