Executando verificação de segurança...
1

Por que os dois primeros exemplos o resultado está correto e nos dois últimos exemplos dão um resultado “errado”?

A linguagem JavaScript é uma linguagem de tipagem dinâmica, isso significa que ela é uma linguagem flexível, a grosso modo, ela tenta fazer por conta própria o melhor que ela pode, para que o nosso programa não “quebre”. Como?

Um detalhe é que isso não é apenas por javascript ter tipagem dinâmica, mas sim por ter tipagem fraca, uma linguagem com tipagem dinâmica mas forte é Lua:

-- exemplo 1:
print("1" - 1) -- resultado: 0.

--exemplo 2: 
print("1" - "1") -- resultado: 0.

-- exemplo 3:
print("1" + 1) // resultado: 2

-- exemplo 4: 
print("1" - "A") // resultado: Erro

E como é que faz 1+1 das 11? você usa concatenação com ..:

-- exemplo 1:
print(1 .. 1) // resultado: 11

Isso de "1"+1 ser 11 é uma falha de desing do javascript que foi percebido tarde demais, então ela não faz "o melhor" ela só foi mal projetada mesmo

Carregando publicação patrocinada...