Partilhar via


Copiando, passando e comparação de dados

A maneira como JScript copia, transmite e compara dados depende de como os dados são armazenados, que por sua vez depende do tipo de dados.JScript armazena dados por valor ou por referência.

Por valor vs.Por referência

JScript copia, transmite e compara números e valores booliano (True and False) por valor.Esse processo aloca um espaço na memória do computador e o valor do original copiado para ele.As alterações no original não afetam a cópia (e vice-versa) porque as duas entidades separadas.Dois números ou valores booliano são considerados iguais caso tenham o mesmo valor.

JScript copia, transmite e compara objetos, matrizes e funções por referência.Basicamente, esse processo cria uma referência ao item original e usa a referência sistema autônomo se fosse uma cópia.As alterações ao original alteram o original e a cópia (e vice-versa).Na verdade, há apenas uma entidade; a cópia é apenas outra referência aos dados.

Para comparar com êxito por referência, as duas variáveis devem se referir a exatamente a mesma entidade.Por exemplo, dois distintas Array objetos sempre irão comparar sistema autônomo desigual, mesmo que contenham sistema autônomo mesmos elementos. Uma das variáveis deve ser uma referência para o Outros para a comparação seja bem-sucedida.Para verificar se os dois arrays Isenção os mesmos elementos, comparar os resultados do toString() método.

Por fim, JScript copia e passa as seqüências de caracteres por referência.Se as cadeias de caracteres são objetos determina como as cadeias de caracteres são comparadas.Two String objetos (criados com nova string("algo")) são comparadas por referência.Se uma (ou ambas) das seqüências de caracteres for um valor de seqüência de caracteres literal ou primitivo, eles são comparados por valor.Para obter mais informações, consulte Atribuição de JScript e de igualdade.

Observação:

Os conjuntos de caractere ASCII e ANSI são construídos para que as letras maiúsculas preceda as em minúsculas na ordem de sequência.Por exemplo, "Zoo" compara sistema autônomo menos que "aardvark." Você pode chamar toUpperCase() or toLowerCase() em ambas as seqüências de caracteres se desejar executar uma correspondência não diferencia maiúsculas de minúsculas.

Parâmetros de função

Quando JScript passa um parâmetro para uma função por valor, ele faz uma cópia separada desse parâmetro existe somente dentro da função.Embora objetos e conjuntos são passados por referência, se um novo valor na função substitui-los diretamente, o novo valor não é refletido fora da função.Apenas alterações para propriedades de objetos ou elementos de matrizes, são visíveis fora da função.

Por exemplo, o programa a seguir tem duas funções.A primeira função substitui o parâmetro de entrada, que impede que ainda mais as alterações para o parâmetro que afetam o argumento de entrada original.A segunda função altera a propriedade do objeto sem substituir o objeto.

function clobber(param) {
   // Overwrite the parameter; this will not be seen in the calling code
   param = new Object();
   param.message = "This will not work.";
}

function update(param) {
    // Modify the property of the object; this will be seen in the calling code.
    param.message = "I was changed.";
}

// Create an object, and give it a property.
var obj = new Object();
obj.message = "This is the original.";

// Call clobber, and print obj.message.
clobber(obj);
print(obj.message);

// Call update, and print obj.message.
update(obj);
print(obj.message);

A saída desse código é:

This is the original.
I was changed.

Comparação de dados

JScript pode comparar dados por valor ou por referência.Para executar um teste por valor, o JScript compara dois itens diferentes para determinar se são iguais entre si.Geralmente, essa comparação é realizada em uma base byte por byte.Quando ele testa por referência, ele verifica se dois itens referir-se ao mesmo item.Em caso afirmativo, eles comparar sistema autônomo igual; caso contrário, embora eles possam conter sistema autônomo mesmos valores exatos, byte por byte, elas comparam tão desiguais.

Seqüências de caracteres podem ser comparadas por valor ou referência, dependendo ou não as seqüências de caracteres são objetos.Se ambas as seqüências de caracteres String objetos, as seqüências de caracteres são comparados por referência; caso contrário, eles são comparados por valor. Isso permite que duas cadeias de caracteres comparar sistema autônomo igual se cada um foi criada separadamente a partir de Outros, mas cada um tem o mesmo conteúdo.Para comparar os valores de dois String objetos, primeiro converta os objetos em cadeias de caracteres não-objeto com o toString or valueOf métodos e, em seguida, compare o resultante strings. Para obter mais informações, consulte Atribuição de JScript e de igualdade.

Consulte também

Conceitos

Atribuição de JScript e de igualdade

Resumo do tipo de dados

Outros recursos

JScript Idioma tour

Funções do JScript