在onclick函数中使用双管道-为什么事件为假
Using double pipes in onclick function - why would event be false?
我试图理解委托是如何工作的,我在这里找到了一个很好的解释
在站点上,它们包括下面的代码。我在理解双管的使用上有很多困难。我对StackOverflow做了一些研究,了解到双管道用于检查第一个值是否为假(即它是or
)。然而,在本例中,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有窗口。事件而不是http://javascript.info/tutorial/obtaining-event-object
有了这样的东西,正常的赋值声明通常有一个or语句(||
)来跨多个浏览器工作,并允许浏览器分配哪个为真。下面是一些例子:
var webgl = canvas.getContext("webgl") || canvas.getContext("experimental-webgl");
在这个语句中,我试图访问画布元素的WebGL上下文。现在有些浏览器比其他浏览器更老,为了支持尽可能多的浏览器,我请求标准的WebGL上下文,或者一个叫做"experimental-webgl"的上下文,这可能是在旧版本的Chrome, Firefox等。
另一个例子:
requestAnimFrame = return
window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame;
我试图在这里设置requestAnimationFrame,这是一种非常快速有效的方法,比setInterval();
更好。再一次,我试图确保我支持尽可能多的浏览器。
最后一个来自jQuery源代码:
jQuery规范了跨浏览器的非标准化属性。event.which
规范密钥码检测
event.which = original.charCode != null ? original.charCode : original.keyCode;
在这里,检查是看charCode是否返回一些东西,如果没有,那么浏览器不使用该属性,所以JavaScript将尝试访问并分配keyCode
属性给event.which
。
希望这能让你了解||
在赋值声明中的作用
- 为什么js事件消失了
- 为什么我的点击事件没有使用 react js 触发
- 为什么不'我的窗口滚动事件根本没有启动.其他答案没有解决问题
- 为什么CraftyJS/Chrome限制同时按键事件的数量
- 为什么我没有得到对Comet服务器流事件的实时响应
- 为什么此事件侦听器不工作
- 为什么动态加载的事件在我的代码中不能正常工作
- 为什么事件处理程序要等到触发代码完成执行
- 为什么事件mouseenter在JavaScript中触发两次
- 为什么事件侦听器不触发动态创建的单选按钮
- 使用事件委派,为什么事件阶段为 0,表示无
- 为什么事件instanceofTouchEvent在Firefox中引发异常
- 为什么事件监听器不能读取属性
- 为什么'事件'变量,即使不作为参数传递也可用
- 为什么事件会在dom中冒泡?
- 为什么事件委托不能与jquery on()一起工作?
- 为什么n't事件第二次触发(delegateEvents没有帮助)
- 为什么事件不会像onkeyup, onkeypress, onmouseup那样触发
- 为什么事件侦听器只注册在for循环中创建的最后一个元素?
- 在onclick函数中使用双管道-为什么事件为假