JavaScript Nombre et cordes déclaration

voix
0

J'essaie de comprendre que comment puis-je obtenir une vraie logique sur le code JavaScript suivant:

var x = 10;
var y = 20;
var result = x   y;
document.getElementById(demo).innerHTML = result;

lien: https://www.w3schools.com/js/tryit.asp?filename=tryjs_numbers_add_strings4

La sortie du code suivant est = 1020 en fonctionnement « addition ». Dans mon esprit, je pense qu'il est correct parce que c'est la concaténation de deux nombres comme une chaîne.

var x = 100;
var y = 10;
var z = x / y;   
document.getElementById(demo).innerHTML = z;

lien: https://www.w3schools.com/js/tryit.asp?filename=tryjs_numbers_string1

Mais la sortie du code suivant est = 10 en fonctionnement « Division » et il est ne peut pas compter ce numéro deux en tant que chaîne. Il a calculé le numéro deux en nombre. **** S'il vous plaît quelqu'un me aider que je serai comprendre clairement. ****

Créé 02/09/2018 à 05:05
source utilisateur
Dans d'autres langues...                            


5 réponses

voix
0

JavaScript est un langage vaguement typé. Cela signifie que nous pouvons faire des calculs avec des chaînes, (par exemple "100" / "10" === 10) et JavaScript réalise automatiquement doit interpréter ces chaînes comme des nombres.

Mais alors pourquoi n'est pas "10" "20"égal à 30?

JavaScript (peut - être mal) décident d'utiliser le même opérateur ( ) pour la concaténation de chaîne ainsi que l' ajout. Cela signifie qu'ils ont dû décider si les chaînes numériques comme doivent être interprétés comme des chaînes ou des nombres dans ce cas, et concaténation de chaîne gagné. En fait, même "10" 20et 10 "20"et 10 "2" 0sera tout rendement "1020". S'il y a une chaîne quelque part , concaténation de chaîne gagne.

Créé 02/09/2018 à 05:35
source utilisateur

voix
0
var a  = "1022";            //variable a&b takes a string.
var b = "2";     
var c = a/b;                //a and b are converted to number type implicitly 
                            //because strings have no function with '/'.
document.write(c   "<br>"); //prints division between a and b (a/b).
c = toString();             //converts c to string explicitly.
document.write(c);          //shows an error as i said string cant be divided!.

Faites-moi savoir si je l'aidais!

Créé 02/09/2018 à 05:31
source utilisateur

voix
0

En javascript « » opérateur est traité comme opérateur de concaténation si l'un des arguments est une chaîne et « / » opérateur de division a seulement « opération de division qui lui est associée.

Créé 02/09/2018 à 05:21
source utilisateur

voix
0

En javascript, opérateur de division convertit implictly chaînes en nombres et effectuer la division Mais plus javascript considère comme une chaîne et d'effectuer concaténation.

Créé 02/09/2018 à 05:17
source utilisateur

voix
0

JavaScript fait de son mieux pour vous donner une réponse raisonnable, peu importe quel type de données que vous lui donnez. Dans votre premier exemple, il vous voit postulez l'opérateur à deux cordes. Ceci est une chose valable pour ce faire (concaténation), donc pas de contrainte est réalisée - les deux chaînes sont concaténées.

Dans votre deuxième exemple, il vous voit postulez l'opérateur / à deux cordes. Ce n'est pas une chose valable de le faire, mais l'application de cet opérateur à un nombre serait valide, et les chaînes que vous lui a donné peut à la fois être représenté sous forme de nombres, de sorte que ce qu'il fait. Il les convertit en nombres et effectue ensuite cette division.

Cette contrainte automatique peut être très pratique (vous n'avez pas à vous soucier presque tellement de types en JavaScript comme dans d'autres langues). Parfois, il peut aussi être un peu dangereux car il peut vous donner les résultats que vous ne vous attendez pas, mais une fois que vous arrivez à comprendre comment et quand la contrainte est appliquée, le danger diminue un peu.

Créé 02/09/2018 à 05:17
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more