Javascript 在onclick函数中使用双管道-为什么事件会为false?
我试图理解授权是如何工作的,我找到了一个很好的解释 在网站上,它们包括以下代码。我很难理解这里双管的用法。我对StackOverflow做了一些研究,了解到使用双管道检查第一个值是否为false(即它是Javascript 在onclick函数中使用双管道-为什么事件会为false?,javascript,delegation,Javascript,Delegation,我试图理解授权是如何工作的,我找到了一个很好的解释 在网站上,它们包括以下代码。我很难理解这里双管的用法。我对StackOverflow做了一些研究,了解到使用双管道检查第一个值是否为false(即它是或)。 然而,在这种情况下,onclick被触发,因为显然发生了一个事件 那么为什么event会是假的呢?使用双管有什么意义 table.onclick = function(event) { event = event || window.event var target = event
或)。
然而,在这种情况下,onclick
被触发,因为显然发生了一个事件
那么为什么event
会是假的呢?使用双管有什么意义
table.onclick = function(event) {
event = event || window.event
var target = event.target || event.srcElement
while(target != table) { // ( ** )
if (target.nodeName == 'TD') { // ( * )
toggleHighlight(target)
}
target = target.parentNode
}
}
顺便问一下,当我这么做的时候,他们有没有理由省略分号?它们有时是不必要的,还是对它们来说更简单?事件对象并不总是传递给单击处理程序-IE具有window.event
对于类似的事情,正常的赋值声明通常有一个or语句(|
)来跨多个浏览器工作,并允许浏览器分配其中一个为真的。以下是一些例子:
var webgl = canvas.getContext("webgl") || canvas.getContext("experimental-webgl");
在这个语句中,我试图访问Canvas元素的WebGL上下文。现在,一些浏览器比其他浏览器更老,为了支持尽可能多的浏览器,我请求使用标准的WebGL上下文,或者一个称为“实验性WebGL”的上下文,它可能在Chrome、Firefox等的旧版本中
另一个例子:
requestAnimFrame = return
window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame;
我试图在这里设置requestAnimationFrame,这是一种比setInterval()更好的快速有效的方法代码>。同样,我正在努力确保我支持尽可能多的浏览器
来自jQuery来源的最后一个:
jQuery跨浏览器规范化非标准属性<代码>事件。它
使关键代码检测正常化
event.which = original.charCode != null ? original.charCode : original.keyCode;
在这里,检查charCode是否返回某些内容,如果没有,则浏览器不使用该属性,因此JavaScript将尝试访问keyCode
属性并将其分配给事件
希望这能让您了解分配声明中|
的目的。请参阅。所有这些关于事件处理的文章都非常好:。有什么理由省略分号吗?
在许多自动插入分号的地方,分号是可选的。规则在里面。但是,由于规则有点臃肿,手动插入分号更容易(在我看来,这使代码更容易阅读)。此外,迷你们可能会完全弄乱没有它们的代码(自动插入是脚本引擎的一个功能)。根据OP的问题,他们已经理解了|
的用途:“我对StackOverflow做了一些研究,了解到使用双管道检查第一个值是否为假(也就是说,它是一个or)“。问题是在这种情况下,事件
将是错误的。我仍然解释了这一点。在每个例子之后,支持旧浏览器,它们的任何怪癖,前缀功能。