javascript - 跨浏览器有效的 JavaScript 名称

标签 javascript variables

在您使用“RTFM”或我访问过的一堆链接快速发布之前,我完全知道不使用已记录的保留变量名称。

我能找到的最佳列表在这里:

http://es5.github.com/x7.html#x7.6.1.1http://www.javascripter.net/faq/reserved.htm

我要的是仅在 1 或 2 个浏览器上无效的变量名称。

例如,我可以定义 print,但这会导致错误,因为 print 已经在全局范围 window 中定义。为什么不将其记录为保留关键字?

是否有大量变量名需要避免?

最佳答案

What I am asking for are the variable names that are invalid on 1 or 2 browsers only.

如果存在任何此类词语,则该浏览器将不符合 ECMA-262。只有 ECMA-262 中的保留字是“无效的变量名称”(前提是该名称在其他方面符合变量名称的标准,例如允许的字符)。

Why isn't [print] documented as a reserve keyword?

保留字只能由具有保留字概念的标准定义,唯一与在具有该概念的浏览器中编写 DOM 脚本相关的标准是 ECMA-262。而且它没有将 print 列为保留字,所以它不是保留字。

有多种定义宿主对象及其属性的 DOM 标准,它们可能最接近保留字概念的是只读属性或不可写属性。 window.print是在 HTML5 中定义的,它没有将其定义为不可写,或者如果分配给它或尝试修改它应该抛出错误。因此它不会表现出任何接近保留字的行为。

Is there a big list of variable names to avoid?

没有,因为没有。但是,宿主对象(如 window)具有可写的默认属性,您应该避免覆盖它们。它们应该列在不同的地方,例如 HTML5 规范和浏览器 vendor 文档。

例如window 对象的以下链接:

  1. W3C HTML5 窗口对象:http://www.w3.org/TR/html5/browsers.html#the-window-object
  2. MDN 窗口对象:https://developer.mozilla.org/en/DOM/window
  3. MSDN 窗口对象:http://msdn.microsoft.com/en-us/library/ms535873(v=vs.85).aspx

此外,还有一个简单的 for..in 循环(根据 Berji 的回答)来发现特定时间的可枚举属性,但是这可能不是所有可能属性名称的完整列表,并且将包括用户定义的属性与默认浏览器属性没有区别。

采用避免可能的属性名称并尽量减少全局变量(即窗口对象的用户定义属性)的使用的命名约定是更好的策略。

关于javascript - 跨浏览器有效的 JavaScript 名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10931833/

相关文章:

javascript - 由中心对齐引起的水平偏移的 CSS3 过渡

javascript - 依次显示表单字段。 (JavaScript/CSS)

javascript - 在javascript中转换对象数组

jquery - 定义 jquery attr 变量的正确方法?

c - gcc:C 中未声明的变量,但已声明

php - 在表单中打印 JS 变量

sql - 参数化 DDL SQL Snowflake

javascript - 如何获得以下 PHP 回显以使用 PHP 变量输出此 JavaScript 警报?

javascript - 无法使可拖动的工作

java - 在 Java 中如何打开我的 equals 语句来接受多个参数?