const supersearch = function({a = 1, b}) {
console.log(arguments[0]);
console.log(a, b);
};
supersearch({b: 2});
预期结果:
{
"a": 1,
"b": 2
}
1 2
但实际结果:
{
"b": 2
}
1 2
我应该如何获得arguments
?
doc:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments
更新:
我现在可以想到的一种方式,有没有更好的书写方式?
const supersearch = function({a, b}) {
console.log({...{a: 1}, ...arguments[0]});
console.log(a, b);
};
supersearch({b: 2});
答案 0 :(得分:0)
嗨,您定义了一个对象类型的一个自变量,因此发生了
from django.db.models.signals import pre_save
from django.dispatch import reveicer
@receiver(pre_save, sender=DataCustomer)
def data_customer_pre_save_receiver(sender, instance, *args, **kwargs):
if not instance.pk: # checking whether the object is new or it's being updated
sale = instance.sales_name
if instance.status == Status.objects.get(status_name='Deal') and instance.payment_method == Payments.objects.get(method='CASH'):
sale.points += 13
if instance.status == Status.objects.get(status_name='Deal') and instance.payment_method == Payments.objects.get(method='CREDIT'):
sale.points += 8
sale.save()
答案 1 :(得分:0)
也许您正在寻找这个:
const supersearch = function({a = 1, b, ...rest}) {
console.log({a,b});
console.log(a, b);
};
supersearch({b: 2});
答案 2 :(得分:0)
我建议这样做:
const supersearch = function(inputParams) {
const defaulParams = { a: 1};
const allParams = {...defaultParams, ...inputParams};
const {a,b} = allParams;
console.log(allParams);
console.log(a, b);
};
答案 3 :(得分:0)
您可以如下使用Object.assign({a: 1}, args);
。并且destruct
对象位于function
中,而不是parameter
中。
const supersearch = function(args) {
let {a, b} = Object.assign({a: 1}, args);
console.log(arguments[0]);
console.log(a, b);
};
supersearch({b: 2});
supersearch({a: 10, b: 2});