Is "remove" a reserved keyword in Google Chrome?

google-chrome, javascript, reserved-words

Solution

Elements in Chrome have a `.remove()` method which allows for self-removal of an element instead of having to do it from the parent.

The trouble is that when using attribute handlers, you get a different scope chain. That scope chain includes the element itself, as well as the `document`. This means that all properties of the element and `document` show up as variables.

Because you named your function `remove()`, and because it's a global function/variable, it is being shadowed by the `.remove` property (now variable) on the element itself. This can be seen with an alert. If you change your handler to:

onclick="alert(remove)"

...you'll get something like:

function remove() { [native code] }

So it's not that it's reserved, but rather that it's used as a property which ends up shadowing the global.

To fix it, either use the global directly:

onclick="window.remove()"

Or change the function name.

Problem

I have an interesting problem, and I think I got to the root of it, but I wanted to be sure. I have a link that calls a function called remove(). All browsers except Chrome had no issues with the function. However, the link that is clicked disappeared in Chrome, even when I simplified the function as in the example below. I have seen this question: Can't use "download" as a function name in javascript. In the links, however, I did not see anything about "remove" as a reserved keyword. My question is this, I am correct about this being a keyword? If so, is there anywhere I can find a list of Google keywords? I have searched and have not found this to be a problem anywhere else. ``` <a href="javascript:void(0)" onclick="remove()">Remove</a> ``` Javascript: ``` function remove(){ alert("Hi"); } ```

Original source

Related problems