Existem seis tipos de dados comuns em js: tipo String, tipo Nulo, tipo Número, tipo Booleano e tipo Objeto.
1. Notas sobre typeof
Quando se trata de tipos de dados, é inevitável mencionar o operador typeof. Para observar:
Primeiro, typeof é um operador, não um método. Embora frequentemente usemos typeof() para obter o tipo de dados de um objeto.
2. Typeof para null é object (isso ocorre porque null é uma referência de objeto vazia) e typeof para function é function.
Copie o código do código da seguinte forma:
alert(typeof null); //retorna objeto
função demonstração(){
alerta('demonstração');
}
alert(typeof demonstração); //função de retorno
2. Defina valores iniciais para variáveis de objeto de vários tipos de dados
Observe que se a variável de objeto do tipo Object não souber o que atribuir inicialmente, não use var demo={}, é melhor defini-la como null;
Copie o código do código da seguinte forma:
var d2=nulo;
d2={'chave':"merda"};
var d3='';//String padrão
var d4=0; //O valor inicial do tipo de número é definido como 0
var d5=null; //Definir valor padrão inicial para tipo de objeto
3. A diferença e pontos a serem observados entre indefinido e nulo
1. Se você usar "==" para comparar, eles serão iguais porque comparam valores.
2. Existem duas maneiras de distingui-los (o principal é comparar seus tipos de dados)
1) Use typeof para distingui-los
2) Use "===" congruente: a comparação é entre o valor e o tipo de dado, e true será retornado apenas se forem todos iguais.
Copie o código do código da seguinte forma:
alerta(indefinido == null); //verdadeiro
alert(typeof indefinido == typeof null);
alerta(indefinido === nulo); //verdadeiro
4. Notas sobre Booleano
1. A comparação entre verdadeiro e 1 é a mesma, e a comparação entre falso e 0 é a mesma (é uma comparação "=="), porque a conversão do tipo de dados é implementada internamente, convertendo verdadeiro em 1 e convertendo falso em 0. Há muitos dados dentro de js A conversão automática de tipos é algo que todos devem prestar atenção. Muitos mais serão mencionados posteriormente. Mas usar "===" não é igual, porque seus tipos de dados não são iguais.
2. Exibir a conversão para Boolean Use o método Boolean() para exibir a conversão. O que você precisa prestar atenção são os vários tipos de dados, quando converter para verdadeiro e quando converter para falso.
1) Tipo string, desde que não seja uma string vazia, será convertida para true
2) Tipo de número, desde que não seja 0, mesmo um número negativo será convertido em verdadeiro
3) O tipo de objeto, desde que não seja do tipo nulo, será convertido para verdadeiro
4) O tipo indefinido será convertido em falso
Não vou fazer uma demonstração, você pode tentar você mesmo.
3. (***) A função booleana é chamada dentro () da instrução if().
5. Pontos a serem observados sobre o tipo de número
1. O tipo float não pode realizar operações precisas.
Copie o código do código da seguinte forma:
alerta(0,1+0,2); //Retorna 0,300000000000000004
2. Apoiar operações de notação científica
3. NaN (não é um número)
1) var d=0/0 Nota: Nenhum erro será relatado em js, mas NaN será retornado.
2) Pode ser obtido através de Number.NaN
3) Qualquer operação entre NaN e qualquer objeto retornará NaN.
4) isNaN() determina se é NaN
Copie o código do código da seguinte forma:
alert(isNaN(NaN)); //verdadeiro
alert(isNaN(12)); //falso
alert(isNaN('123'));//false: Porque os números do tipo string podem ser convertidos automaticamente em números
alerta(isNaN('lew')); //verdadeiro
alert(isNaN(false));//(*)false: Como o valor bool pode ser convertido em um número, verdadeiro se torna 1, falso se torna 0
5) Princípio de execução interna de isNaN(): O mesmo se aplica a objetos. Princípio de implementação: O primeiro-ministro chama o método valueOf() do objeto. Se ele puder ser convertido em um número, será julgado diretamente; se não puder ser convertido em um número, ele chamará o método toString() novamente. e então teste o valor de retorno.
valueOf() chama internamente o método toObject(). O princípio de execução interna dos dois métodos é o seguinte:
Copie o código do código da seguinte forma:
var caixa={
//Substitui o método toString() do objeto box
toString:função(){
retornar '123';
}
};
alerta(isNaN(caixa)); //falso
alert(box);//123 Internamente alert() também chama primeiro o valueOf() do objeto e depois chama o método toString().
6) Converta outros tipos de dados para o tipo Número
Contém três funções: Number(): pode converter todos os tipos de dados; parseInt() e parseFloat() converte apenas strings;
Copie o código do código da seguinte forma:
alerta(Número('123')); //123
alerta(Número('0234')); //234
alerta(Número(verdadeiro)); //1
alerta(Número(nulo));//(**)0
//Exceto o acima, todo o resto retorna NaN.
alerta(Número(indefinido))//NaN
O princípio de implementação interna de Number(): O mesmo que isNaN(), valueOf() é chamado primeiro e depois toString() é chamado. . Portanto, pode-se imaginar que o desempenho é relativamente ruim. . Portanto, desde que o objeto a ser transformado seja uma string, chame parseInt() ou parseFloat() porque eles não precisam julgar o tipo internamente.
Observe ao chamar parseInt() e parseFloat(): A parte da string começando do primeiro caractere numérico até o número antes do primeiro caractere numérico ser convertido em um número.
Copie o código do código da seguinte forma:
alerta(parseInt('123leb'));//123
alerta(parseInt('123leb345'));//123
alerta(parseInt('len234'));//NaN
Quando o parâmetro em parseInt() é do tipo float, apenas a parte inteira do número é obtida.
Copie o código do código da seguinte forma:
alerta(parseInt(56.12));//56
6. Tipo de string
1) (*Importante*) Strings são imutáveis em ECMAScript: strings não serão alteradas após serem criadas.
Para alterar uma variável de string à qual foi atribuído um valor, primeiro destrua a string na variável e, em seguida, preencha a variável com uma string contendo o novo valor.
Copie o código do código da seguinte forma:
var d='olá';
d=d+' shit';//Processo de execução: primeiro atribua um valor a 'hello', depois limpe a string em d, concatene as strings 'hello' e 'shit', e então atribua um valor à variável d. (Portanto, o valor da string não mudará depois de criada)
2) O método toString() converte outros tipos de dados no tipo String. Mas se você operar em nulo ou indefinido, um erro será relatado.
3) No entanto, o método String() também pode obter o efeito de toString(), mas pode operar em nulo e indefinido.
Princípio interno: Chame toString() primeiro e, se puder ser convertido em uma string, o resultado será retornado diretamente. Não, então julgue se é nulo ou indefinido e retorne 'nulo' ou 'indefinido'
Resumo: Se você sabe que a variável não pode ser nula ou indefinida, use toString(), que tem melhor desempenho do que String(). Como String() precisa fazer julgamentos internos, isso prejudicará o desempenho.