En passant NULL comme paramètre dans l'ES6 ne pas utiliser le paramètre par défaut lorsque l'on est

Est-il une raison pourquoi en passant null comme un paramètre dans l'ES6 ne pas utiliser le paramètre par défaut lorsque l'on est?

function sayHello(name = "World") {
    console.log("Hello, " + name + "!");
}

sayHello("Jim");     //Hello, Jim!
sayHello(undefined); //Hello, World!
sayHello(null);      //Hello, null!
  • parce que la valeur null est une valeur valide?
  • Mais c'est undefined..
  • non, il n'est pas 🙂 vous pouvez lire à propos de la différence entre l'indéfini et nul ici stackoverflow.com/questions/5076944/...
  • sémantiquement, ils sont différents 🙂
  • Si undefined n'était pas une valeur, elle ne serait pas affectée, mais elle peut être. C'est le test le plus simple pour déterminer si quelque chose est une valeur. Et tout simplement, la réponse est mal d'utiliser dans le contexte: undefined est utilisé comme valeur par défaut dans certains cas, ce n'est pas indéfini "pas de valeur". Considérer: a = new Array(1). Puis a[0] donnera le undefined valeur même si la 0 in a est faux. Qu'il, a[0] contient "aucune valeur", même si elle permettra d'évaluer l' (par défaut) undefined valeur.
  • il peut être affecté, mais indéfini signifie que la variable n'est pas définie, alors que la valeur null signifie que la variable est définie, mais sa valeur est null.
  • J'ai expliqué plus haut pourquoi c'est incorrect. Parler de "si la variable n'a pas été définie" (dans le cas de typeof x === 'undefined', où x seul serait/pourrait jeter une ReferenceError) n'a aucune incidence sur le fait que undefined est une valeur. En particulier, 'undefined' en JavaScript n'est pas strictement "signifie" n'a pas été défini/déclarée".
  • Qu'en est var x = undefined;? Est ma variable pas encore défini?
  • Je pense que je me suis exprimé mal avant. Ce n'est pas que la variable n'est pas définie, dans ce cas, la variable pointe vers une valeur qui n'a pas encore été défini. Alors que la var x = null signifie que x a la valeur définie de la valeur null. Vous pouvez penser pas défini comme non initialisé alors que null est initialisé avec une valeur nulle. C'est déroutant, je le sais. @Felix Kling
  • Vous pouvez considérer ce cas d'utilisation. X doit être initialisé avec une valeur reçue sur une requête http. Nous commençons avec var x; et x n'est pas définie. Maintenant, nous faisons la demande et qui peut finir dans les 2 sens. La demande réussit et x obtient une valeur. Ou la requête échoue, auquel cas nous nous fixons x à la valeur nulle, car nous savons maintenant que x n'a pas de valeur. La différence est principalement sur de la signification et du javascript truthy/falsy système de valeur n'aide pas beaucoup à éclaircir ce point.

InformationsquelleAutor aus_lacy | 2015-09-22