Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在onclick函数中使用双管道-为什么事件会为false?_Javascript_Delegation - Fatal编程技术网

Javascript 在onclick函数中使用双管道-为什么事件会为false?

Javascript 在onclick函数中使用双管道-为什么事件会为false?,javascript,delegation,Javascript,Delegation,我试图理解授权是如何工作的,我找到了一个很好的解释 在网站上,它们包括以下代码。我很难理解这里双管的用法。我对StackOverflow做了一些研究,了解到使用双管道检查第一个值是否为false(即它是或)。 然而,在这种情况下,onclick被触发,因为显然发生了一个事件 那么为什么event会是假的呢?使用双管有什么意义 table.onclick = function(event) { event = event || window.event var target = event

我试图理解授权是如何工作的,我找到了一个很好的解释

在网站上,它们包括以下代码。我很难理解这里双管的用法。我对StackOverflow做了一些研究,了解到使用双管道检查第一个值是否为false(即它是
)。
然而,在这种情况下,
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)“。问题是在这种情况下,
事件
将是错误的。我仍然解释了这一点。在每个例子之后,支持旧浏览器,它们的任何怪癖,前缀功能。