对JavaScript中冒号(:)的新认识

对JavaScript中冒号(:)的新认识

JavaScript中冒号(:)是做什么的?你可能经常看到这的写法:

XHTML

<div onclick= »javascript:alert(‘test’) »>test</div>

你可能很习惯认为这是一个伪协议,意思是使用JavaScript语法解析后面的代码,在a标签的href中才是伪协议!那么如果这个代码变成这样呢:

XHTML

<div onclick= »xxoo:alert(‘test’) »>test</div>

你可以试试,代码并不会出错,因为在JavaScript中这样的写法是合法的。其语法是:

labelName:statement

实际上,在onclick或onmouseover这样的属性的值是一段JavaScript代码片段,因此刚才的代码也是合法的,可执行的。

在JavaScript中,我们常见的使用冒号(:)的情况有:

1,对象表达法
冒号在这里用来分割对象的属性和属性值。

JavaScript

var o = {    value: ‘some value’,    words: ‘say some words’};

2,三目运算
冒号在这里用来分割不同条件的返回值。

JavaScript

1var result = (condition exp) ? (value1) : (value2) ;

3,分支语句
冒号在这里用来分割被罗列的switch中表达式的值和对应的代码块。

JavaScript

switch(n)   {   case 1:     code 1;     break;   case 2:     code 2;     break;   default:     other codes;   }

上面的情况很常见,而且大家并不陌生,那么一开始我们讲到的写法又是什么意思呢?

labelName:statement

这种是标签的写法,如果你略懂windows中的批处理,你应该一下就知道它的作用,在批处理中,标签用来标识代码位置,在需要改变代码流程的时候,可以goto labelName来实现指定的跳转。而JavaScript中它的功能也与此类似,你可以用标签来标识一个循环,然后用break或continue来改变程序的执行流程。我们来看下下面的例子:

   提示:你可以先修改部分代码再运行。

标签名可以使用合法的JavaScript标识符而不能是保留字。

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *