gpt4 book ai didi

javascript - 可选参数和默认值

转载 作者:行者123 更新时间:2023-11-30 10:16:34 24 4
gpt4 key购买 nike

我是 javascript 的新手,以下 2 个函数是否做同样的事情,你会选择一个而不是另一个吗?

var multiply = function(arg1, arg2) {
arg1 && (arg1 = 0);
arg2 && (arg2 = 0);
return arg1*arg2;
}


var multiply = function(arg1, arg2) {
arg1 = arg1 || 0;
arg2 = arg2 || 0;
return arg1*arg2;
}

我问的原因是我第一次看到这样的东西

  function(path, limit) {
var ref = firebaseRef(path);
limit && (ref = ref.limit(limit)); //if i understood correctly this line does an assignment based on condition without an if statement
return $firebase(ref);
}

最佳答案

function(path, limit) {
var ref = firebaseRef(path);
limit && (ref = ref.limit(limit)); // Important
return $firebase(ref);
}

Important那一行,可以这样写

if (limit) {
ref = ref.limit(limit);
}

但是如果你想像第一种方式那样写,你就可以了,

ref = limit && ref.limit(limit)

这有一个问题,当 limit 为 Falsy 时 && 立即返回 limit 的评估 Falsy 值,因此 ref 现在是 Falsy。我相信你不会想要这个。

归根结底,作为程序员,我们编写的代码的可读性和可维护性很重要。因此,我建议使用明确的 if 检查,我在答案开头提到过。

注意:另外,正如其他人所指出的,第一个multiply应该是这样的

var multiply = function(arg1, arg2) {
arg1 || (arg1 = 0);
arg2 || (arg2 = 0);
return arg1 * arg2;
}

更好的是,我会这样写

var multiply = function(arg1, arg2) {
return (arg1 || 0) * (arg2 || 0);
}

关于javascript - 可选参数和默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23369362/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com