1. Tipo não numérico para valor numérico
Ao usar Number() conversão:
Ao usar parseInt() para converter:
var num1 = parseint ("10", 2); // 2 parse var num2 = parseint ("10", 8); // 8 parse var num3 = parseint ("10", 10); // 10 parse var num4 = parseint ("10", 16); // 16 parse em hexadecimal Ao usar a conversão parseFloat() :
A primeira diferença entre Parsefloat e Parseint é que ele encontra um caractere numérico de ponto flutuante inválido ao analisar uma corda, que é muito mais do que parseint.
Retorna 0 ao analisar valores hexadecimais
var num = parsefloat ("0xa"); // 0var num = parseint ("0xa"); // 10A função Parsefloat não possui um segundo parâmetro que especifica a cardinalidade; portanto, apenas os valores decimais são analisados.
Se a string for um número inteiro, ele retornará um número inteiro em vez de um número de ponto flutuante
var num = parseFloat("2.125e7"); //31250000
2. Use ToString () para produzir valores em diferentes dígitos
Esta barra se aplica aos números inteiros, podemos usar o ToString () para retornar números inteiros em qualquer formato binário.
var num = 10; alerta (num.toString ()); //"10"alert(num.toString(9)); //"11"alert(num.toString(16)); //"um"
3. Preste atenção ao NAN e ao infinito quando os operadores de bits
Ao usar operadores de bits para NAN e Infinity, ambos os valores são tratados como 0. Se um operador de bit for aplicado a um valor não numérico, o valor será convertido em um valor numérico usando a função número ().
Outra coisa a observar é que a mudança direita não assinada de números negativos e a mudança direita não assinada é preencher o espaço vazio com 0, diferentemente da mudança direita assinada com bits de sinal, para que a mudança direita não assinada e a mudança direita assinada de números positivos sejam os mesmos, mas o número negativo é diferente. A operação de mudança direita não assinada tratará o código binário negativo como o código binário positivo, e o número negativo é representado na forma de complemento, o que causará o resultado da mudança direita não assinada a ser muito diferente.
var OldValue = -64; var newValue = OldValue >>> 5
4. Operações numéricas especiais
Para operações numéricas, se houver um operando que seja NAN, o resultado é NAN.
Use uma operação de adição ou subtração individual (+,-, mais ou signo negativo) para valores não numéricos. Se o valor não puder ser convertido em um valor numérico (convertido usando o método number ()), a NAN será retornada.
var s1 = "01", s2 = "1.1", s3 = "z", b = false, o = {valueof: function () {return -1;}}; s1 = +s1; // 1 + altere para -: -1s2 = + s2; //1.1 -1.1S3 = +S3; // nan nanb = +b; // 0 0o = -o; //-1 1Multiplicar o infinito e 0 é igual a NAN, e multiplicar o não -0 é o infinito e a infinidade, dependendo do sinal do multiplicador. Multiplicar o infinito e o infinito é igual ao infinito.
var num1 = infinito, num2 = 0, num3 = -2, num4 = -infinity; alert (num1 * num2); // nanalert (num1 * num3); //-InfinityAlert (num1 * num4); //-Infinidade
O zero é dividido em zero e é nan, e os números diferentes de zero divididos por zero são infinitos ou -infinity. Infinito dividido pelo infinito como nan
Para operação de Modulo, a seguinte equação é mantida:
Infinito%2 = nan; 2%-infinity = 2; 0%infinito = 0; // Desde que o divisor seja 0, o divisor não é nan, o resultado é 0infinity%0 = nan; // O divisor pode ser qualquer número e, desde que o divisor seja 0, o resultado é naninfinity%infinito = nan
Operação de adição: Se ambos os operando forem strings, + se tornará uma concatenação de string. Se um for uma string e o outro for um valor numérico, converta o valor numérico em uma string e concatenando a string. Se um operando for um objeto, o valor booleano chamará primeiro o método ValueOf. Se nada, chame o método da tostragem. Em seguida, com base no tipo de valor de retorno, determine se o sinal + deve ser conectado à string ou adicionado.
Infinito + -infinity = nan; var p = {valueof: function () {return -1; }}; var num = 1; var resultado = num +p; alert (resultado); // 0 Adicionar var p = {valueof: function () {return "não um num"; }}; var num = 1; var resultado = num +p; alert (resultado); // 1 não uma concatenação num stringOperação de subtração: a operação de subtração é muito semelhante à operação de adição, e o processamento de objetos é o mesmo, então não explicarei mais.
Infinito - infinito = nan; -infinity - -infinity = nan;
5. Uso de operadores relacionais
Os operadores relacionais são menores que (<), maiores que (>), menor ou igual a (<=) e maiores ou iguais a (> =)
Enquanto houver um valor, a comparação numérica será realizada e a outra não for um valor numérico e será convertido em um valor numérico. Use o valor do primeiro para o objeto e depois use a tostragem. De fato, não importa qual operação o objeto execute, isso é verdade. Se houver valor do valor, o valor do valor é usado para retornar o valor, caso contrário, a tostragem será usada para retornar o valor.
Ambas são strings e, em seguida
Em relação ao primeiro, deve -se notar que, quando uma string é um valor numérico, quando uma string não pode ser convertida em um valor numérico, a seguinte situação ocorrerá como NAN.
var resultado = "a" <3; // false A converte A para Nanvar resultado = "A"> = 3; // false qualquer número em comparação com a nan é falso
6. == e ===
No JavaScript, se os dois lados da equação tiverem tipos diferentes, ou apenas um objeto for incluído, a comparação será dividida em duas situações e a comparação após a transformação é diretamente comparada com a transformação. == deve converter primeiro e comparar, === é comparar diretamente sem converter. Para ===, ele retorna false desde que os tipos não sejam iguais. Para ==, é dividido nas seguintes situações:
True será convertido em 1, False será convertido para 0.
Comparando strings com valores numéricos, as strings são convertidas em valores numéricos.
Se houver apenas um objeto em ambos os lados da equação, esse objeto chamará o Valueof para obter o tipo básico, como chamar o método de tonstring sem o método ValueOf. Se ambos os lados forem objetos, nenhuma transformação será feita.
var p = {"nome": "a"}; var q = {"name": "a"} var o = p; alert (q == p); // false Os endereços dos objetos apontados por p e q são diferentes, embora o conteúdo do objeto seja o mesmo alerta (o == p); //verdadeiroAqui estão as comparações especiais
null == indefinido // truenan! = nan // truenan == nan // false "nan" == nan // falsendefined == 0 // Falsenull == 0 // false
7. Declaração para entrada
A ordem de saída das declarações for-in é imprevisível e a ordem pode variar dependendo do navegador.
Quando a variável para iterar não for nula ou indefinida, o erro não será mais lançado no ECMAScript 5, mas o corpo do loop não será executado. Se você deseja compatibilidade avançada, julgará que não é nulo ou indefinido antes do loop.
8. Declaração SWETHC
Switch pode usar qualquer tipo de dados.
O valor de um caso pode ser uma constante, uma variável e uma expressão.
A instrução Switch usa o operador de comparação congruente (===) ao comparar valores.
var num = 25; switch (true) {case num <0: alert ("menos 0"); quebrar; case num> = 0: alert ("mais de 0"); quebrar; padrão: alert ("erro");}9 Uso da função
Se não houver declaração de retorno na função ou retorno não tiver nenhum valor de retorno, a função retornará indefinida.
A definição de uma função não é consistente com os parâmetros da função ao chamá -la. Em outras palavras, os dois parâmetros (parâmetros formais e parâmetros reais) não têm conexão. As variáveis fornecidas ao definir uma função são apenas mais convenientes de usar. Mesmo que não sejam definidos, os parâmetros passados para a função podem ser obtidos (através de argumentos []).
function HowManyargs () {alert (argumentos.Length);} HowManyargs ("A"); // 1howmanyargs ("A", "B"); // 2howmanyargs (); // 0A relação entre parâmetros formais e argumentos [] é a seguinte, prestando atenção à diferença entre o modo rigoroso e o modo não rigoroso.
function HowManyargs (ss) {argumentos [0] = "teste"; argumentos [1] = alerta "test2" (argumentos [0]); // alerta de teste (argumentos [1]); // alerta de teste2 (SS); // teste} HowManyargs ("A"); função HowManyargs (ss) {"use argumentos rigorosos" [0] = "teste"; argumentos [1] = "test2" alerta (argumentos [0]); // testalert (argumentos [1]); // test2alert (ss); // a} HowManyargs ("A");10. Uso de parâmetros de função
Ao definir uma função, escreveremos os parâmetros usados nos parênteses da função, mas será inflexível o suficiente quando houver vários parâmetros opcionais. No momento, podemos usar objetos para encapsular vários parâmetros opcionais.
função displayInfo (args) {var output = ""; if (typeof args.name == "string") {output + = "nome:" + args.name + "/n"; } if (typeof args.age == "número") {output + = "idade:" args.age + "/n"; } alerta (saída); } displayInfo ({name: "nicholas", idade: 29}); displayInfo ({name: "Greg"});