JavaScript Número & Cordas declaração

votos
0

Tento entender que como eu posso conseguir uma verdadeira lógica na seguinte código JavaScript:

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

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

A saída do seguinte código é = 1,020 em operação adição. Em minha mente eu acho que é correto porque é a concatenação de dois números como uma string.

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

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

Mas a saída do código a seguir é = 10 em operação divisão e que é não pode contar isso duas número como uma string. Ele calculou o número dois como número. **** Por favor, alguém me ajudar a que eu serei entendê-lo claramente. ****

Publicado 02/09/2018 em 05:05
fonte usuário
Em outras línguas...                            


5 respostas

votos
0

JavaScript é uma linguagem fracamente tipada. Isto significa que podemos fazer matemática com cordas, (por exemplo "100" / "10" === 10) e JavaScript percebe automaticamente que deve interpretar essas cadeias como números.

Mas, então, por que não é "10" + "20"igual a 30?

JavaScript (talvez mal) decidir usar o mesmo operador ( +) para concatenação, bem como adição. Isso significa que eles tinham que decidir se cadeias numéricas-como deve ser interpretada como cordas ou como números neste caso, e concatenação ganhou. Na verdade, mesmo "10" + 20e 10 + "20"e 10 + "2" + 0tudo vai rendimento "1020". Se há uma corda em algum lugar , de concatenação ganha.

Respondeu 02/09/2018 em 05:35
fonte usuário

votos
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!.

Deixe-me saber se eu ajudei!

Respondeu 02/09/2018 em 05:31
fonte usuário

votos
0

Em javascript "+" operador é tratado como operador de concatenação, se qualquer um dos argumentos é uma string e operador "/" divisão tem apenas uma operação "divisão associada a ele.

Respondeu 02/09/2018 em 05:21
fonte usuário

votos
0

Em javascript, operador de divisão implicitamente converte seqüências para números e realizar divisão Mas para além javascript considera como corda e executar concatenação.

Respondeu 02/09/2018 em 05:17
fonte usuário

votos
0

JavaScript faz o seu melhor para dar-lhe uma resposta razoável, independentemente do tipo de dados que você dá. Em seu primeiro exemplo ele vê que você está aplicando o operador + para duas cordas. Isso é uma coisa válida para que ele faça (concatenação), de modo que nenhuma coerção é realizada - as duas cadeias são concatenadas.

Em seu segundo exemplo se vê que você está aplicando o operador / a duas cordas. Esta não é uma coisa válida para fazer, mas aplicando esse operador para números seriam válidas, e as cordas que lhe deu tanto pode ser representado como números, de modo que é o que ele faz. Ele converte-os em números e, em seguida, executa esta divisão.

Esta coerção auto pode ser muito conveniente (você não tem que preocupar-se quase tanto sobre tipos em JavaScript como em outras línguas). Às vezes, ele também pode ser um pouco perigoso na medida em que pode lhe dar resultados que você não espera, mas uma vez que você começa a entender como e quando a coerção é aplicada, o perigo diminui um pouco.

Respondeu 02/09/2018 em 05:17
fonte usuário

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