En realidad, la respuesta de Ma Jerez hace un punto muy importante aquí.También esta respuesta se refiere a esto similar question: esta pregunta implica un par de cosas:
- elevador: se izan las variables antes de la ejecución de código de bloque;
=
orden de asignación: va de derecha a izquierda;
- contexto global: en modo no estricto, cuando una variable no está definida, va al contexto global; pero lanzará en modo 'uso estricto';
example1:
;(function Anonymous(){
var a = b = {};
console.log(a==b); //true
})();
a
fue izada en el ámbito Anonymous
ejecución.
b
va a ser asignado como {}
, sino porque b
no está definido, b
se asigna al contexto global window
, a continuación, se asigna window.b
{}
; luego window.b = {}
return
s {}
.
variable local a
se asigna como {}.
Por lo tanto, algunas cosas interesantes suceden aquí: la local variable a
y la global variable b
ambos apuntan al mismo objeto {}
, por lo que son ==
y ===
; recuerde que {}=={}
da false
si no.
Nota: si está en modo estricto:
;(function Anonymous(){
'use strict'
var a = b = {}; //Uncaught ReferenceError: b is not defined
})();
esta asignación consecutiva no funcionará de la misma manera ...
¿Qué quiere decir "¿cómo funciona esto?" – Jamiec
Consulte [Asignación de múltiples personas a la izquierda con JavaScript] (http://stackoverflow.com/questions/1758576/multiple-left-hand-assignment-with-javascript). –
@Jamiec: Funciona muy bien, gracias por preguntar;) – Piskvor