Maison > Questions et réponses > le corps du texte
过去多啦不再A梦2017-07-05 10:55:08
À 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.
为情所困2017-07-05 10:55:08
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
伊谢尔伦2017-07-05 10:55:08
js预解析时会对var关键字定义的变量进行预解析,都会赋值undefined。下面将其赋值为字符串,上面定义的时候也就将它预先初始化为一个空字符串。只声明var res;,不给它赋值也是可行的。
曾经蜡笔没有小新2017-07-05 10:55:08
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.