作者livetune (初月)
看板Ajax
标题[ js ] label的教学看不懂
时间Sun Dec 29 16:42:29 2013
标签叙述
标签为叙述提供一个识别字,用於直接跳转到该标示符号所指定的行开始
执行。但是,不像是其它的语言,JavaScript没有像goto这样的跳跃叙述
。这个标签叙述仅能由break和continue叙述使用,用来指示break和continue
到哪个叙述,语法如下:
label:
statement
参数label 用於为後面的叙述定义一个唯一的识别字,它可以是任何的符合
JavaScript变数定义规则的识别字。
参数statement是与label相关联的一个或多个叙述,也可以是复合叙述。
例如下面的程式码,定义了一个名为Inner的标签,continue叙述使用一个
标签叙述来创建一个阵列,在该阵列中,每行的第三列包含一个未定义的值。
var a = new Array();
Inner:
for( var i= 0; i < 5 ; i ++){
if( i == 2) {
//如果i等於2就跳到 Inner继续执行,这样第三行就没有赋值
continue Inner;
} else {
a[i] = i + 1;
}
var s = "";
//搜寻阵列元素
for ( var j = 0; j <5; j ++ ) {
s += a[j] + "<br>";
}
document.write(s);
这毁会传回如图5-8所示的结果(第三个元素没有值):
1
2
undefined
4
5
_______撷自张亚飞《JavaScript & jQuery 全能权威指南》
这个范例我有看没有懂耶@@;
不懂的地方有点多..例如,为什麽它在宣告变数的时候,是直接在
for回圈的括号里面宣告,不是在外面?之後的程式码则是在外面宣
告 var s = "";
它的 else { a[i] = i + 1 }这边我也看不太懂
是表示如果 i 不是小於 5 的话会把它加1吗?
这边else这样写的用意我也不太懂@@
新手上路,还请大家不吝指点迷津一下..感激~感激 ~~ <(__ __)>
想请问之後的程式码也是用同一个阵列吗?变数a…
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 36.224.217.18
1F:推 LPH66:你先不要看 label, 把那之前的东西给搞懂再说 12/29 17:19
2F:→ LPH66:如果都懂了还是看不懂范例那就换本书吧 12/29 17:20
3F:推 s540421:var i 要宣告在回圈内外都可以,javascript本身有提升机 12/29 20:34
4F:→ s540421:制,会自动把for statement上的变数宣告提升到scope开头 12/29 20:35
5F:→ s540421:else内则是把i的值加上1,然後赋值给a[i] 12/29 20:37
6F:→ s540421:你明白for回圈机制的话会明白这段回圈会执行5次 12/29 20:38
7F:→ s540421:变数i的值会从0开始逐次增加1,0->1->2->3->4 12/29 20:38
8F:→ s540421:而label这东西如1F所言,可以不用看,这是时代遗物 12/29 20:41
9F:→ s540421:至於最後的问题,变数名称要怎麽取随你高兴,符合规则就好 12/29 20:45
10F:→ s540421:如果给他new Array或[],这变数就是一个阵列 12/29 20:45
11F:→ s540421:你赋予字串给它,它就是存有字串的变数,这是弱形态的特性 12/29 20:46
12F:推 LPH66:其实我的意思是这些都跟 label 无关而是更基本的东西 12/29 22:07
13F:→ LPH66:而如果一本书跳过这些更基本的东西没说就讲 label 的话 12/29 22:07
14F:→ LPH66:那这本书也就不用看了...不过确实现在也不需要去知道 label 12/29 22:08