【发布时间】:2019-09-09 19:33:59
【问题描述】:
我从 Python 转向 Javascript。在 Python 中,如果您使用列表或字典作为函数的默认参数,则每次调用都会看到相同的对象。所以如果你有这样的功能:
def append_to_list(lst=[]):
lst.append(1)
return lst
然后这样称呼它:
lst1 = append_to_list()
lst2 = append_to_list()
lst2 的值将是 [1, 1] 而不仅仅是 [1]
Javascript 是否存在与默认参数相同的问题?
【问题讨论】:
-
每次调用函数时都会创建一个新数组。 lst2 和 lst1 将是数组的 2 个相同但不同的副本。换句话说,没有。
-
感谢您的确认。刚刚测试了自己。很惊讶我在 SO 上找不到这样的问题,所以想将其发布为快速参考。
-
为什么不赞成这个?
-
我认为我无法根据该问题猜测这种情况下的行为。这也说明 JS 急切地评估它的论点。 Python 在函数定义时评估其默认参数,这也将被归类为渴望。
标签: javascript python default-arguments