【发布时间】:2018-02-16 20:36:58
【问题描述】:
有很多 JavaScript 习惯用法在类型和类似事物之间进行强制转换。
! 可以将任何错误的值转换为布尔值 true、!! 可以将任何错误的值转换为实际的布尔值 false、+ 可以将true、false 或表示数字的字符串转换为实际数字等。
是否有类似的东西可以将undefined 转换为null?
现在我正在使用三元 ? : 但如果我错过了一个有用的技巧会很酷。
好的,让我设计一个例子......
function callback(value) {
return value ? format(value) : null;
}
callback 由有时通过undefined 的第三方代码调用。
第 3 方代码可以处理 null 被传回,但不能处理 undefined。 format() 也是第 3 方,无法处理通过 undefined 或 null。
【问题讨论】:
-
我不确定是否有一种很好的快速方法可以在它们之间进行转换,但如果有帮助:
undefined == null返回 true,不像undefined === null -
@VamshiGudipati:我本来打算这样做,但人们只会告诉我其他方法,所以我决定不这样做。我只是想提高我的 JavaScript 习语词汇量,我认为这足以提出一个好问题。成语的全部意义在于它们有很多用途。
-
我看不出从
undefined转换为null的操作在您的示例中如何有用。您是否尝试将您的callback实现为return toNullIfUndefined(value) && format(value)?我认为你当前的代码是清晰、干净和惯用的。 -
@hippietrail 好吧,使用
&&而不是三元是相当单一的,所以无论如何这不会从toNullIfUndefined运算符中受益。 -
如果您想知道为什么这在某些情况下很有用 - Angular 表单控件对象可以使用对象“设置”,但如果属性存在且未定义,您会收到错误“属性 X失踪'。如果该属性为“null”,则不会出现错误。
标签: javascript null undefined idioms coercion