这种类型的表达式在Javascript中的名称是什么?Obj [s] = ++ Obj [s] || 1



我的具体例子将增加obj[s],如果它是真(有一个值),如果它是假的(还不存在于对象中),它将设置它等于1,从而添加到对象

但我要问的,一般看起来像:

something = doIfTruthy || doIfFalsey

我想它必须有一个名字,就像我们称呼这个"三元或条件运算符"一样

something = condition? ifTrue: ifFalse 

我希望能够在我的笔记中用一个合适的名字来指代它。现在我就叫它"利用真理/谬误"。因为我就是这么用的

我也想知道你怎么称呼这种表达,因为它们很相似:

something = condition && ifTrue

您可以参考MDN上的此页面以获取有关操作符的更多信息,但您所询问的要点是:

A || B

称为"逻辑或";操作符,它将从左到右执行表达式,直到找到一个真表达式,返回第一个真表达式。

A && B

称为"Logical AND"操作符,它将从左到右执行表达式,直到找到一个假表达式,返回最后一个真表达式。

注:

我个人不建议跟随代码作者的脚步编写像obj[s] = ++obj[s] || 1这样的东西,因为即使它很简洁,也需要一些阅读才能理解。考虑如下内容:

obj[s] ||= 0;
++obj[s];

或:

obj[s] = (obj[s] || 0) + 1;

或简单的:

if (typeof obj[s] !== 'number')
obj[s] = 0;
++obj[s];

为| |操作, JS将返回FIRST"truthy"它找到的值(从左到右阅读):

var bob = false || undefined ||  0  ||  null || "hi"
//          ^          ^         ^      ^        ^
//          nope       nope      nope   nope     yip
//
// => bob = "hi"
// --------------
// breaking
// --------------
var bob = false || "hi" ||  0  ||  null || undefined
//          ^       ^
//          nope    yip <-- stops here
//                          the rest are ignored
//
// => bob = "hi"

另一个技巧是使用&&(和)在访问它之前确保它存在。

,,,操作, JS将返回LAST"truthy"它找到的值(从左到右阅读)。

例如,如果您试图从多级对象中读取属性。

var obj = {
foo : {
bar : "hi"
}
}
var bob = obj && obj.foo && obj.foo.bar;
//          ^        ^              ^
//          yip      yip            use this
//
// => bob = "hi"
// --------------
// breaking:
// --------------
var bob = obj && obj.foo && obj.foo.sally && obj.foo.bar;
//        ^          ^              ^
//        yip        yip            nope  <-- stops here, 
//                   ^                        and returns the last "yip"
//                   |                        the rest are ignored   |
//                   '-----------------------------------------------'
//
// => bob = obj.foo

Both || and &&操作从左到右读取…所以你可以有一些通常会把错误扔到右边的东西,因为JS一旦检测到真/假值就会停止从左到右的读取。

相关内容

  • 没有找到相关文章

最新更新