我想知道以下代码在=和然后OR操作||方面做了什么安排。我已经在堆周围看到它,但从未理解它的确切做法。我得到它可能根据可用的分配一个或另一个属性,但它如何确定?它是否寻找哪一个不是“未定义”?如果第一个是“未定义”,它是否仅使用第二个?你能拥有多一个“||”吗?如果两者都不是“未定义”怎么办?如果两者都是“未定义”会怎么样?
音频上下文代码就是我最近看到的地方..我不关心它是如何工作的,而是关注运营商的安排及其运作方式。
我也明白这可能已经在其他地方得到了解决,但是我找不到它,因为我不知道这个传册被称为什么,它甚至有名字?
window.AudioContext = window.AudioContext||window.webkitAudioContext;
答案 0 :(得分:1)
我一直听说这被称为一种特征检测模式。基本上是在:
的情况下var a = x || y;
如果x未定义或为null,则将指定a。否则将分配y。 你也可以链接它们。 JS选择第一个不为null或未定义的。
var b = null || undefined || "s"; // b will be "s"
如果您尝试在旧版浏览器中填充函数,或者您只是想确保不覆盖当前命名空间中具有相同名称的现有函数,则这很方便。你可以用typeof运算符或者?获得类似的结果。运营商也是如此。
答案 1 :(得分:0)
OR(||
)将返回它遇到的第一个truthy表达式,因此如果另一个值为false,则此模式用于提供默认值(例如undefined,null,0,false或空字符串“ “)。在这种情况下,如果标准实现不可用,它将提供audioContext的webkit特定实现。