通过逻辑运算符OR指定默认值
Assigning a default value through the logical operator OR
我们知道,如果第一个操作数为true,javascript逻辑运算符||将生成其第一个操作数值。否则,它将生成第二个操作数的值。
所以在这个例子中:
<script language="javascript">
function test (value){
this.value = value || "(value not given)";
}
</script>
如果传递给函数的参数值被视为false,就像整数0或空字符串">一样,那么this.value将被设置为(未给定的值(这不是true正确的(因为我们确实在传递值(。
所以问题是,设置this.value的最佳方式应该是哪一种?
编辑:所有4个第一个答案都使用三元运算符"?"。我的问题是关于"||"运算符。
带有||
的方案最便于编写,但只能在伪值(undefined
、null
、0
、""
、false
、NaN
(不是合法值时使用。(当你只想处理null
和undefined
时,你可以使用本提案中描述的并包含在ES2020中的新零合并算子(??
(。(
如果你想允许特定的false值而不允许其他值,那么你必须编写更具体的代码来处理你的特定情况。例如,如果你想允许一个空字符串,但不允许null或未定义或其他虚假值,那么你就必须编写更具体的代码,比如:
function test(value) {
if (value || value === "") {
this.value = value;
} else {
this.value = "(value not given)";
}
}
或者,如果你只想排除undefined
,你可以专门测试它:
function test(value) {
if (value === undefined) {
value = "(value not given)";
}
this.value = value;
}
这取决于要排除的值。如果"一般错误值"在一个类别中过于宽泛,你可以更明确:
function test(value) {
this.value = value !== undefined ? value : "(value not given)";
}
如果您希望能够分配false值,请执行此操作。
this.value = (typeof value !== 'undefined') ? value : 'value not given';
这将保留false
、''
和0
等值,但在实际未将该值作为参数传递时将使用默认值。
<script language="javascript">
function test (value){
this.value = arguments.length > 0 ? value : "(value not given)";
}
</script>
您可以通过检查函数参数数组的长度来检查该参数是否已传入。
正确的方法是:
this.value = (typeof value == 'undefined') ? 'my argument' : value;
可能是重复的问题。谷歌搜索。
现在,根据应用程序关心的浏览器支持,您可能需要使用默认参数:
var test = (value = '(value not given)') => {
this.value = value;
};
这与今天有关,而且自2011年以来,问答日期一直没有更新,所以我认为这可能会有所帮助。
- 我的shareService在angular 2中发送值工作正常,但当我渲染我的另一个组件时,会获得默认值
- jquerydatetimepicker日期和时间应在框默认值中,而无需单击框
- 如果值为空,如何设置输入的默认值?jQuery
- 骨干模型默认值-todos.js示例中不必要的代码
- jquery日期选择器年份范围默认值
- Html5输入属性的默认值,如最小值、最大值、大小等
- 根据两个下拉列表的默认值禁用按钮
- 如何创建具有默认值的JavaScript对象字段?(AngularJS模型相关)
- Angularjs-设置不带ng选项的select的默认值
- jQuery Datepicker从日期开始设置默认值
- 如何设置浏览器打开的文件对话框的文件名(一些默认值)
- JQuery BlockUI鼠标加载光标没有't在Google Chrome中返回默认值
- Selectize选择默认值
- 在KeystoneJS中为Types.Money设置默认值
- 是否可以同时为一个元素的所有事件指定阻止默认值
- 防止在IE7中按回车键时出现默认值
- 如何覆盖jqGrid's语言默认值
- 如何为显示jquery滑块值的文本框设置默认值
- 如果存在值,则使用值,否则使用 or 运算符分配默认值
- 通过逻辑运算符OR指定默认值