我已下载了一个javascript脚本,其中一行是:
qq = qq || {};
Run Code Online (Sandbox Code Playgroud)
这是什么意思?
Kzq*_*qai 23
它检查qq预先存在的truthy值,否则(||)将其设置为空对象({}).
从本质上讲,它的目的是快速确保对qq的任何进一步引用都不会被定义,因此您可以检查对象的属性而不会破坏脚本,因为该变量甚至不是第一个中的有效对象地点.
小智 7
在JavaScript中,||(logical-or)运算符具有以下逻辑表:
A | B | A || B Truthy | Don't care | A (guaranteed to be Truthy) Falsy | Don't care | B (may be Truthy or Falsy)
(请参阅JavaScript中的Truthy和Falsy,了解这些术语的含义.)
因此,在以下情况下qq = qq || {}:
如果qq最初评估为Falsy值,则结果为qq || {}is {},因此({}Truthy值)被分配给qq.否则,qq最初是Truthy值,并且qq || {}(结果是评估的结果qq)被分配给qq.
这是一个惯用的守卫,用于轻松防止"未定义"的参数,属性等.
有些人可能更喜欢使用以下近似等效的构造:
if (!qq) {
qq = {}
}
Run Code Online (Sandbox Code Playgroud)
这后一种情况下,然而,仅分配给qq当qq最初Falsy; 表单qq = qq || {}总是进行赋值,但这种"开销"是如此陈腐,不应该用作不使用该方法的理由.
快乐的编码.
| 归档时间: |
|
| 查看次数: |
1256 次 |
| 最近记录: |