0

我在我的项目中得到了这段代码,但我对它不满意,因为重复了相同的 var 声明。有没有更好的方法来处理它?

if (type == 1) {
    var addressId = data.address.BillingAddress.id;
    var addressTitle = data.address.BillingAddress.title;
    var $select = $('.billingAddressId');
    var $notification = $('.billingNotification');
} else {
    var addressId = data.address.DeliveryAddress.id;
    var addressTitle= data.address.DeliveryAddress.title;
    var $select = $('.deliveryAddressId');
    var $notification = $('.shippingNotification');
}
4

6 回答 6

6

为什么不在 if-else 块之前声明它们

var addressId, addressTitle, $select, $notification;
if ( type == 1 ) {
     addressId = data.address.BillingAddress.id;
     addressTitle = data.address.BillingAddress.title;
     $select = $('.billingAddressId');
     $notification = $('.billingNotification');
} else {
     addressId = data.address.DeliveryAddress.id;
     addressTitle= data.address.DeliveryAddress.title;
     $select = $('.deliveryAddressId');
     $notification = $('.shippingNotification');
}
于 2013-09-19T06:37:19.857 回答
2

恕我直言,没有必要这样做。您将添加 4 行不必要的代码。

利用 Javascript 的优势,您可以做到这一点,并保持原样。

于 2013-09-19T06:40:56.947 回答
1

您可以使用动态属性:

var addressId = data.address[type==1 ? "BillingAddress" : "DeliveryAddress"].id,
    addressTitle = data.address[type==1 ? "BillingAddress" : "DeliveryAddress"].title,
    $select = $(type==1 ? '.billingAddressId' : '.deliveryAddressId'),
    $notification = $(type==1 ? '.billingNotification' : '.shippingNotification');
于 2013-09-19T06:40:59.840 回答
1

您可以放弃if并使用短路评估

var addressId = type === 1 && addressId = data.address.BillingAddress.id 
                           || data.address.DeliveryAddress.id;
/** ...etc **/

或使用三元运算符

var addressId = type === 1 ? addressId = data.address.BillingAddress.id 
                           : data.address.DeliveryAddress.id;
/** ...etc **/
于 2013-09-19T06:42:25.720 回答
0
 var addressId = "";
var addressTitle ="";
var $select = "";
var $notification="";
if (type == 1) {
               addressId = data.address.BillingAddress.id;
                addressTitle = data.address.BillingAddress.title;
                $select = $('.billingAddressId');
                $notification = $('.billingNotification');
            } else {
                addressId = data.address.DeliveryAddress.id;
                addressTitle= data.address.DeliveryAddress.title;
                $select = $('.deliveryAddressId');
                $notification = $('.shippingNotification');
            }

于 2013-09-19T06:38:51.013 回答
0

在外部范围内声明变量,以便您可以在块内访问它们。

var addressId = "";
var addressTitle = "";
var $select="";
var $notification="";

if (type == 1) {
    addressId = data.address.BillingAddress.id;
    addressTitle = data.address.BillingAddress.title;
    $select = $('.billingAddressId');
    $notification = $('.billingNotification');
} else {
    addressId = data.address.DeliveryAddress.id;
    addressTitle= data.address.DeliveryAddress.title;
    $select = $('.deliveryAddressId');
    $notification = $('.shippingNotification');
}
于 2013-09-19T06:39:01.977 回答