首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在_fireOverOutEvents中执行的Falsy代码

在_fireOverOutEvents中执行的Falsy代码
EN

Stack Overflow用户
提问于 2017-09-05 23:29:58
回答 1查看 84关注 0票数 0

你好,我正在使用fabricjs,它对我来说很好。然而,我最近遇到了一件我无法解释的JavaScript事件,而且我只在fabricjs上(在所有浏览器上)检测到。

注意:我使用的是1.7.11 of fabricjs

它发生在mouse:out事件上。它唯一的副作用是在浏览器控制台上膨胀:

未登录的TypeError:不能读取属性‘火’的空在klass._fireOverOutEvents (fabric.js:9717) .

事情是这样的:

这是普通的fabric.js (即不是我的代码)。

如您所见,targetundefined,因此不执行if块。到目前为止,这是意料之中的。现在是奇怪的部分。

this._hoveredTargetnull (参见下面的调试器视图)。不应该执行else if块,但它确实执行了。

正在执行falsy "else if“的调试视图

我试图用像this._hoveredTarget !== nullthis._hoveredTarget != null这样的变体来修复它,但是当this._hoveredTargetnull时,它仍然在那里。

我以前从没见过这个。有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-08 09:37:55

好的,这不可能仅仅因为代码中的一个bug而发生。如果是假想。可能发生的情况是,您在mouse:out上有一些事件处理,它发生在正在出错的行之前,而该事件处理程序正在删除对this._hoverTarget的引用。

在我看来,这仍然是一个错误,因为如果允许使用自定义代码,则在将变量作为对象访问之前,必须再次检查条件。

当前版本的fabricJS 1.7.17有不同的代码:

this.hoveredTarget立即保存为引用,以便无论发生在hoveredTarget上的情况如何,您都是安全的。

也许你应该升级一下。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46064664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档