1. Pasar por valor (por valor)
El valor de la variable se copia y no tendrá nada que ver con el valor original. Es decir, incluso si se modifica el nuevo valor, el valor original no cambiará. En JavaScript, los tipos básicos se pasan por valor.
Copie el código de código de la siguiente manera:
función pruebaPassValue()
{
varm=1;
varn=2;
// Copia los valores de myn y pásalos a passValue
pasarValor(m,n);
alert(m); //será el valor original
}
función pasarValor(a,b)
{
a = a+b; // Cambia el valor de a, aquí a es solo una copia del valor original
alerta(a);
}
Resultado de salida:
3
1
2. Por referencia.
Se pasa una copia de la referencia misma a la función. El objeto al que apunta la referencia no se copia ni se pasa (lo mismo ocurre en Java, si se cambia el valor del atributo del objeto, desde el original). la referencia apunta al mismo objeto, por lo que se accederá al valor modificado a través de la referencia original;
Pero si simplemente apunta la referencia a un nuevo objeto en la función, el valor del objeto original no cambiará, solo se cambiará la referencia copiada.
Copie el código de código de la siguiente manera:
función pruebaPassValue()
{
var fecha = nueva fecha (2006,02,27);
alert(date.getDate()); //La salida es 27
// Copie la referencia de fecha y pásela a passReference. Tenga en cuenta que el objeto señalado por la fecha no se ha copiado.
pasarReferencia(fecha);
alert(date.getDate()); //La salida es 12
//Igual que el anterior
cambioReferencia(fecha);
alert(date.getDate()); //La salida sigue siendo 12
}
función pasarReferencia(da)
{
//Dado que da y la referencia original apuntan al mismo objeto, fuera de la función, a lo que se accede a través de la referencia original será el valor del atributo de fecha del objeto, que será el valor modificado.
da.setDate(12);
}
cambio de funciónReferencia(da)
{
// En este momento, la referencia da es en realidad una copia de la referencia original. La reasignación de la referencia en sí no afectará la referencia original.
da= nueva fecha(2007,05,11);
// Apunta la referencia da a un nuevo objeto. En este momento, la referencia original todavía apunta al objeto original.
alert(da.getDate()); // La salida es 11
}
3 cuerdas especiales
En JavaScript, String también se pasa por referencia. Solo existe el método charAt en js, pero no hay un método de modificación correspondiente. Es lo mismo que String en java y tiene inmutabilidad.
Copie el código de código de la siguiente manera:
var s1 = "hola";
var s2 = "infierno" + "o";
si (s1 == s2)
alert("s1 = s2"); // ¿Se ejecutará esta oración? Las personas que están familiarizadas con Java pueden pensar que no se ejecutará (soy bastante crítico con esta oración, ¡también se ejecuta en Java!), porque en java == compara la identidad. De hecho, en js, String == compara si los valores son iguales, por lo que esta oración se ejecutará, pero para otras comparaciones de Object ==, es lo mismo que en Java.