JavaScript点表示法

ska*_*ama 36 javascript syntax

以下行显然用点表示法写得最好.我正在尝试清理我的JavaScript代码以使其严格.这是什么意思?

if (ie||ns6)
{
    var tipobj=document.all? document.all["dhtmltooltip"] : document.getElementById? document.getElementById("dhtmltooltip") : "";
}
Run Code Online (Sandbox Code Playgroud)

我在我的代码行中添加了一些上下文,以防这有用吗?我对DOM一无所知.我不是要支持Internet Explorer 4,这不是我的代码,我自己也无法编写JavaScript.我只是试图让它符合规范,JSLint工具说明了这一行:

第17行字符43的问题:['dhtmltooltip']最好用点表示法编写.

Que*_*tin 93

两种方法可以在JavaScript中访问对象的属性.

点符号

foo.bar.baz
Run Code Online (Sandbox Code Playgroud)

方括号表示法

foo['bar']['baz']
Run Code Online (Sandbox Code Playgroud)

您在代码的一部分中使用后者.

编写JSLint(一种提供该错误消息的工具)的Douglas Crockford认为,尽可能使用点表示法更好.

  • 我不认为有更好的方法来验证JS代码,除了运行和测试它.我认为@David Dorward试图提出的观点是两者都是有效的,这只是一种风格问题.对于大多数人来说,点符号是更受欢迎的样式,但使用方括号表示法没有任何内在错误. (3认同)
  • DN比SBN效率更高,并且通常更具可读性。在某些情况下,我认为SBN更具可读性,但这可能与我习惯的约定更多有关。JSLint是一个不错的工具,不要将我的回答的措辞当作对它的批评,我的目的是避免推广或贬低它。 (2认同)

CMS*_*CMS 16

JSLint想要这个:

var tipobj= document.all ? document.all.dhtmltooltip
                         : document.getElementById 
                           ? document.getElementById("dhtmltooltip") 
                           : "";
Run Code Online (Sandbox Code Playgroud)

但现在假设document.getElementById存在是完全安全的,它是在2000 年之前在DOM Level Core 2上引入的.

document.all 已经死了,除非你试图支持像IE4这样的老浏览器(12岁!):

var tipobj = document.getElementById("dhtmltooltip");
Run Code Online (Sandbox Code Playgroud)

以上两个片段是支持非常旧的浏览器版本的复杂性成本的一个很好的例子:

alt text http://ejohn.org/images/cost-benefit.png