如果存在值,则使用值,否则使用 or 运算符分配默认值
Use value if it exists, else assign default using the or operator
我在一本书中找到了这个例子:
// Create _callbacks object, unless it already exists
var calls = this._callbacks || (this._callbacks = {});
我简化了它,这样我就不必使用特殊的对象范围:
var a = b || (b = "Hello!");
当定义 b 时,它起作用。如果未定义 b,它不起作用并抛出 ReferenceError。
ReferenceError: b is not defined
我做错了什么吗?谢谢!
在执行像 this._callback
这样的属性查找时,如果 _callbacks
属性不存在this
,您将得到undefined
。 但是,如果您只是对像 b
这样的裸名称进行查找,如果不存在b
,您将收到引用错误。
这里的一种选择是将三元与 typeof
运算符一起使用,如果操作数是尚未定义的变量,它将返回 "undefined"
。 例如:
var a = typeof b !== "undefined" ? b : (b = "Hello!");
它应该以这种形式工作:
var b, a = b || (b = "Hello!", b);
// ^ assign b
// ^ () and , for continuation
// ^ return the new value of b
//=> result: a === b = "Hello!"
相关文章:
- 在循环中分配json值时,值被覆盖
- 我的shareService在angular 2中发送值工作正常,但当我渲染我的另一个组件时,会获得默认值
- jquerydatetimepicker日期和时间应在框默认值中,而无需单击框
- 如果值为空,如何设置输入的默认值?jQuery
- 骨干模型默认值-todos.js示例中不必要的代码
- jquery日期选择器年份范围默认值
- Html5输入属性的默认值,如最小值、最大值、大小等
- 根据两个下拉列表的默认值禁用按钮
- 如何创建具有默认值的JavaScript对象字段?(AngularJS模型相关)
- Angularjs-设置不带ng选项的select的默认值
- jQuery Datepicker从日期开始设置默认值
- 如何设置浏览器打开的文件对话框的文件名(一些默认值)
- 当数组在angularjs中没有可比较的值时,如何分配默认值
- 如何通过javascript为输入类型日期分配默认值
- 如果存在值,则使用值,否则使用 or 运算符分配默认值
- 使用 angularjs 将默认值分配给多选下拉列表
- 如何制作更短且可读的比较/逻辑行来分配默认值?在jQuery/JavaScript中
- jquery中.data()分配的默认值
- 如何在密码的表单输入字段中分配默认值
- 如何禁用文本框并为其分配默认值