Что означает эта строка js базы Magento?


Эта строка javascript находится в базовом коде Magento в приложении/дизайне/интерфейсе/базе/по умолчанию/шаблоне/постоянном/оформлении заказа/на странице/выставлении счетов.phtml:

        $('billing-address-select') && billing.newAddress(!$('billing-address-select').value);

Вот строка в контексте:

    <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>        

Похоже, что он сравнивает два значения, но ничего не делает с этим сравнением. Какова его цель?

Author: Reflexorozy, 2015-04-02

1 answers

Я провел некоторое исследование по этому вопросу. Я думал, что && - это чисто логическое "и", но его также можно использовать в качестве ярлыка для "если тогда".

В этом случае, если $('выбор адреса для выставления счетов') имеет значение true, функция newAddress (в opcheckout.js ) будет вызван с "!$("платежный адрес-выберите").значение" в качестве аргумента. Это странный способ программно отображать или скрывать новую адресную форму на одной странице оформления заказа.

Вот вопрос о переполнении стека, где это объясняется: https://stackoverflow.com/questions/3859433/an-explanation-of-shorthand-in-javascript

И хорошее объяснение &vs &&: https://stackoverflow.com/questions/7310109/whats-the-difference-between-and-in-javascript

 0
Author: Reflexorozy, 2017-05-23 12:37:13