通过逻辑运算符OR分配默认值

Igo*_*rra 3 javascript function default-value

我们知道javascript逻辑运算符|| 如果第一个操作数为true,则生成其第一个操作数的.否则,它产生第二个操作数的值.

所以在这个例子中:

<script language="javascript">
function test (value){
    this.value = value || "(value not given)";
}
</script>
Run Code Online (Sandbox Code Playgroud)

如果该参数传递给函数作为被视为像整数0或空字符串""那么THIS.VALUE将被设置为(不给定值),这是不正确正确的(因为确实我们传递的值).

那么问题是哪个应该是设置this.value的最佳方法?

编辑:所有4个第一个答案使用三元运算符"?".我的问题是关于"||" 运营商.

jfr*_*d00 7

该方案用||的是最方便的来写,但是当一个falsey值(它只能使用undefined,null,0,"",false,NaN)是不是一个合法的值.

如果您想允许特定的假值而不允许其他值,那么您必须编写更具体的代码来处理您的特定情况.例如,如果您想允许空字符串,但不允许null或undefined或其他falsey值,那么您必须编写更具体的代码,如下所示:

function test(value) {
    if (value || value === "") {
        this.value = value;
    } else {
        this.value = "(value not given)";
    }
}
Run Code Online (Sandbox Code Playgroud)

或者,如果您只想排除undefined,可以专门测试它:

function test(value) {
    if (value === undefined) {
        value = "(value not given)";
    }
    this.value = value;
}
Run Code Online (Sandbox Code Playgroud)