![]() |
1
5
第一个是错误的,因为它们是未定义的,不是空的。
由于javascript,如果比较松散,将null、undefined、false与相同的值进行比较,我建议显式检查未定义的值。 if (par2 !== undefined) par2 = "my default"; 或 par2 = par2 !== undefined ? par2 : "my default";
然而,第二种方法很方便,但只有在您知道永远不会传递false或null的情况下。 |
![]() |
2
4
更好、更可靠的方法是: 1) 验证传递的参数数量(假设您希望允许传入未定义的值,或null,就像DOM insertBefore函数的情况一样),并且仅在此之后,如果ommited,请尝试设置其值: function Foo(par1, par2) { if (arguments.length < 2) par2 = "my default" else if (arguments.length < 3) par3 = "my default" } 2) 或者,如果要禁止未定义的传递,请将其包含在构造中: function Foo(par1, par2) { if (arguments.length < 2 && par2 === undefined) par2 = "my default" else if (arguments.length < 3 && par3 === undefined) par3 = "my default" } 3) 或者,如果不允许传递null,请将其包含在构造中: function Foo(par1, par2) { if (arguments.length < 2 && (par2 === undefined || par2 === null)) par2 = "my default" else if (arguments.length < 3 && (par3 === undefined || par3 === null)) par4 = "my default" }
|
![]() |
3
3
我通常使用第二个,因为它增加的信号较少。 |
![]() |
4
2
就我个人而言,我认为第二种形式更干净、可读性更强,当然比sergey的参数检查更清晰——尽管这可能有它的位置——但我更喜欢为arg传递可扩展对象,而不是维护arg签名。 例如
|
![]() |
5
2
这个怎么样:
|
![]() |
6
1
我所做的选择取决于参数类型和所需的默认值。 例如,如果par2为false、0、空字符串、null或未定义,则这将分配“默认值”:
这种行为可能不是预期的或需要的。 |
![]() |
7
1
|
![]() |
8
0
没听说过你提到的第二种方式,很有趣。我会:
但是现在你让我注意到了你的第二种方法,我想我会使用它,因为它打字更少。 |
![]() |
9
0
如果使用jquery,可以执行以下操作:
|
![]() |
10
0
当你使用 var foo=bar | | 123; 是计算为false的条形图的值。这可能会给你带来麻烦。 埃里克 |
![]() |
11
0
|
![]() |
Bram · 如何将值设置为每周的今天输入 7 年前 |
![]() |
muaz · C++std::列出具有默认值的参数 7 年前 |
![]() |
slartidan · 使用生成的名称添加DEFAULT约束 9 年前 |
![]() |
Walfie · 如何判断Map是否具有默认值? 10 年前 |
![]() |
2rs2ts · 具有类型和值限制以及默认值的Erlang记录 12 年前 |
![]() |
ryanjdillon · 默认为python类方法中的类变量? 12 年前 |
|
Simon · symfony 2表单显示默认值 12 年前 |
|
user827992 · 将特定类型的所有变量初始化为C中的特定默认值++ 12 年前 |