À en juger par le code que vous avez donné, il n'est pas nécessaire de pré-attribuer la valeur au type chaîne dans le scénario d'utilisation actuel. Vous ne pouvez pas vous tromper si vous ne le prédéfinissez pas.
Mais il y a une différence essentielle entre ne pas attribuer de valeur et attribuer une chaîne vide, c'est-à-dire que le type de la variable est modifié.
Quand aucune affectation n'est effectuée, elle est de type indéfini, lorsque la valeur est nulle, elle est de type null, et lorsque la valeur est une chaîne vide "", elle est de type chaîne.
Par mesure de sécurité, puisque le résultat attendu de cette variable est le type chaîne, c'est un moyen sûr de spécifier son type lors de sa déclaration.
Et si vous ne le précisez pas ? Cela pose parfois des problèmes.
Le problème se produit principalement lorsque vous utilisez cette variable pour fusionner d'autres données. Cela est susceptible de déclencher une conversion de type implicite, et vous pourrez trouver la différence.
Comme suit :
var a;
a+"a";
Alors quel est le résultat ? Pas "a", mais "indéfinia".
Si a est prédéfini sur null, le résultat est "nulla".
Dans votre exemple, res est attribué directement au lieu d'être épissé avec lui, il n'y a donc aucun impact s'il n'est pas affecté à une chaîne vide, mais ce n'est pas recommandé.
Un autre exemple, épissez les nombres de 0 à 9, si ce que vous voulez est aussi une chaîne, telle que "0123456789":
var res;
for (var i = 0; i < 10; i++) {
res+=i;
}
console.log(res);
Est-ce que ça va si je ne le déclare pas ? Non, res sera converti en type numérique, mais non défini est NaN après la conversion, et le résultat final que vous obtenez est également NaN.
Ce n'est correct que si res reçoit la valeur "" chaîne vide.
Le cas actuel n'a pas besoin d'être prédéfini comme une chaîne vide et peut être supprimé pour améliorer la lisibilité du code
Les chaînes vides sont généralement utilisées dans les scénarios où une opération de jugement conditionnel est effectuée sur une chaîne ou une opération est effectuée sur elle-même : Premier type :
var a = '';
if (xxx) {
a = 'hello';
}
console.log('a'); //这时如果你不提前定义好a,如果条件不满足if,那么就不会执行,下面调用变量a的时候就会undefined
Le deuxième type :
var a = '';
a += 2; //这其实也要调用变量a,如果不提前定义,那么也是undefined
Personnellement, je pense que cela a été fait involontairement par l'auteur...
Si vous insistez pour l'interpréter, c'est soit bon, soit mauvais. La bonne chose est que vous pouvez reconnaître intuitivement que res est une variable de chaîne, ce qui améliore la lisibilité ; la mauvaise chose est qu'il existe un processus supplémentaire de création et de publication d'objets, ce qui entraîne une perte de performances, bien que la perte soit négligeable.
À en juger par le code que vous avez donné, il n'est pas nécessaire de pré-attribuer la valeur au type chaîne dans le scénario d'utilisation actuel. Vous ne pouvez pas vous tromper si vous ne le prédéfinissez pas.
Mais il y a une différence essentielle entre ne pas attribuer de valeur et attribuer une chaîne vide, c'est-à-dire que le type de la variable est modifié.
Quand aucune affectation n'est effectuée, elle est de type indéfini, lorsque la valeur est nulle, elle est de type null, et lorsque la valeur est une chaîne vide "", elle est de type chaîne.
Par mesure de sécurité, puisque le résultat attendu de cette variable est le type chaîne, c'est un moyen sûr de spécifier son type lors de sa déclaration.
Et si vous ne le précisez pas ? Cela pose parfois des problèmes.
Le problème se produit principalement lorsque vous utilisez cette variable pour fusionner d'autres données. Cela est susceptible de déclencher une conversion de type implicite, et vous pourrez trouver la différence.
Comme suit :
Alors quel est le résultat ? Pas "a", mais "indéfinia".
Si a est prédéfini sur null, le résultat est "nulla".
Dans votre exemple, res est attribué directement au lieu d'être épissé avec lui, il n'y a donc aucun impact s'il n'est pas affecté à une chaîne vide, mais ce n'est pas recommandé.
Un autre exemple, épissez les nombres de 0 à 9, si ce que vous voulez est aussi une chaîne, telle que "0123456789":
Est-ce que ça va si je ne le déclare pas ? Non, res sera converti en type numérique, mais non défini est NaN après la conversion, et le résultat final que vous obtenez est également NaN.
Ce n'est correct que si res reçoit la valeur "" chaîne vide.
Le cas actuel n'a pas besoin d'être prédéfini comme une chaîne vide et peut être supprimé pour améliorer la lisibilité du code
Les chaînes vides sont généralement utilisées dans les scénarios où une opération de jugement conditionnel est effectuée sur une chaîne ou une opération est effectuée sur elle-même :
Premier type :
Le deuxième type :
Personnellement, je pense que cela a été fait involontairement par l'auteur...
Si vous insistez pour l'interpréter, c'est soit bon, soit mauvais. La bonne chose est que vous pouvez reconnaître intuitivement que res est une variable de chaîne, ce qui améliore la lisibilité ; la mauvaise chose est qu'il existe un processus supplémentaire de création et de publication d'objets, ce qui entraîne une perte de performances, bien que la perte soit négligeable.