javascript - "remove"是 Google Chrome 中的保留关键字吗?

标签 javascript google-chrome reserved-words

我有一个有趣的问题,我想我找到了它的根源,但我想确定一下。我有一个调用 remove() 函数的链接。除 Chrome 之外的所有浏览器都没有问题。然而,被点击的链接在 Chrome 中消失了,即使我简化了下面示例中的功能。我看过这个问题:Can't use "download" as a function name in javascript .但是,在链接中,我没有看到任何有关“删除”作为保留关键字的内容。我的问题是,我认为这是关键字是正确的吗?如果是这样,我是否可以在任何地方找到 Google 关键字列表?我已经搜索过,但没有发现这是其他任何地方的问题。

<a href="javascript:void(0)" onclick="remove()">Remove</a>

Javascript:

function remove(){
 alert("Hi");
}

最佳答案

Chrome 中的元素有一个 .remove() 方法,该方法允许自行删除元素,而不必从父元素中删除。

问题在于,当使用属性处理程序时,您会得到一个不同的作用域链。该作用域链包括元素本身,以及 document。这意味着元素和 document 的所有属性都显示为变量。

因为您将函数命名为 remove(),并且因为它是一个全局函数/变量,所以它被 .remove 属性隐藏 (现在是变量) 在元素本身上。这可以通过警报看到。如果您将处理程序更改为:

onclick="alert(remove)"

...你会得到类似的东西:

function remove() { [native code] }

所以它不是保留的,而是用作最终遮蔽全局的属性。


要修复它,要么直接使用全局:

onclick="window.remove()"

或者更改函数名称。

关于javascript - "remove"是 Google Chrome 中的保留关键字吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16151295/

相关文章:

javascript - 如何在 CouchDB 0.11 中使用设计文档的 lib 部分

google-chrome - 页面滚动时 CSS3 动画打破固定定位

mysql - 由于在 MySQL 中使用保留字作为表名或列名而导致的语法错误

matlab - 为重载的 `end` 函数创建函数句柄

java.lang.ClassCastException : org. hibernate.hql.internal.ast.tree.SqlNode 无法转换为 org.hibernate.hql.internal.ast.tree.FromReferenceNode

javascript - 将由 SQL 构建的 JSON 对象从 PHP 传递到 JavaScript

javascript - 使用 jquery 选择器 .classname 或 div.classname 时更快

javascript - 使用 JavaScript 向图像添加 JavaScript 事件

Jquery animate() 和 google chrome 问题

javascript - V8 会自动解析字符串中的 ascii 字符吗?