¿Qué significa esta línea de Magento Base JS?
-
12-12-2019 - |
Pregunta
Esta línea de Javascript se encuentra en el código base Magento en la aplicación / Diseño / Frontend / Base / Predeterminado / Predeterminado / Persistente / Checkout / Onepage / Billing.phtml:
$('billing-address-select') && billing.newAddress(!$('billing-address-select').value);
Aquí está la línea en contexto:
<script type="text/javascript">
//<![CDATA[
var billing = new Billing('co-billing-form',
'<?php echo $this->getUrl('checkout/onepage/getAddress') ?>address/',
'<?php echo $this->getUrl('checkout/onepage/saveBilling') ?>');
var billingForm = new VarienForm('co-billing-form');
/*billingForm.setElementsRelation('billing:country_id',
'billing:region',
'<?php echo $this->getUrl('directory/json/childRegion') ?>',
'<?php echo $this->__('Select State/Province...') ?>');*/
$('billing-address-select') && billing.newAddress(!$('billing-address-select').value);
var billingRegionUpdater = new RegionUpdater('billing:country_id',
'billing:region',
'billing:region_id',
<?php echo $this->helper('directory')->getRegionJson() ?>,
undefined,
'billing:postcode');
if ($('onepage-guest-register-button')) {
Event.observe($('onepage-guest-register-button'), 'click', function(event) {
var billingRememberMe = $('co-billing-form').select('#remember-me-box');
if (billingRememberMe.length > 0) {
if ($('login:guest') && $('login:guest').checked) {
billingRememberMe[0].hide();
} else if ($('login:register') && ($('login:register').checked || $('login:register').type == 'hidden')) {
billingRememberMe[0].show();
}
}
});
}
//]]>
</script>
Parece que está comparando dos valores, pero no hace nada con la comparación.¿Cuál es el propósito de ello?
Solución
Hice algunas investigaciones sobre esto.Pensé que el && era puramente lógico "y", pero también se puede usar como un atajo para "si entonces".
En este caso, si $ ('Billing-Dirección-SELECT') es verdadera, se llamará a la función NewAddress (en OPCHECKOUT.JS) con "! $ ('Billing-Dirección-SELECT-SELECT'). Valor" Comoun argumento.Es una forma extraña para mostrar u ocultar u ocultar el nuevo formulario de dirección en una página de pago.
Aquí hay una pregunta de desbordamiento de pila donde se explica esto: https://stackoverflow.com/ Preguntas / 3859433 / AN-EXPLICACIÓN DE TAMPENTO EN JAVASCRIPT
y una buena explicación de & vs &&: https://stackoverflow.com/questions/7310109/whats-thle-difference-entre-y en javascript