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?

¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top