詳細(xì)介紹JS兩種語法使用說明
后面跟任意的表達(dá)式,JS兩種語法有明顯不同。匹配時(shí)會(huì)先計(jì)算case后面的表達(dá)式再匹配。匹配時(shí)用的是 === 符號(hào),而不是 == 符號(hào),所以匹配過程不允許任何類型轉(zhuǎn)換,default 放在最后只是邏輯上的需求,而它可以放在 switch 內(nèi)的任何地方。
- var x = 1;
- switch (x + 1) {
- case '2':
- alert('string:2');
- break;
- default:
- alert('default');
- break;
- case 1 + 1:
- alert('number:2');
- break;
- }
- // result:
- // 'number:2'
語法:for(variable in object)
其中 variable 允許任意的表達(dá)式,只要計(jì)算結(jié)果能作為賦值表達(dá)式的左側(cè),迭代對(duì)象屬性名時(shí)并不保證任何特殊的迭代順序,它也只迭代用戶自定義的屬性,而預(yù)定義的屬性和方法是不會(huì)迭代的(比如:Math 的 cos 屬性)數(shù)組本身是一種特殊的對(duì)象,當(dāng)JS兩種語法應(yīng)用于數(shù)組時(shí),迭代的是數(shù)組的索引。
- // 將對(duì)象 obj 的屬性名復(fù)制到數(shù)組中
- var obj =
- {
- x: 1,
- y: new Date(),
- z: function() { }
- }
- var arr = new Array();
- var i = 0;
- for (arr[i++] in obj);
- alert(arr[0]);// 'x'
- alert(arr[1]);// 'y'
- alert(arr[2]);// 'z'
當(dāng)解析器遇到方法定義時(shí),解析器對(duì)其進(jìn)行解析并存儲(chǔ)在一個(gè)以方法名命名的對(duì)象屬性中。JS兩種語法當(dāng)這個(gè)方法是內(nèi)嵌在其他方法中時(shí),這個(gè)屬性是 call 對(duì)象的屬性(每個(gè)方法里都有一個(gè)call對(duì)象。
- var i = 1;
- single:
- {
- if (i == 1)
- break single;
- i++;
- }
- alert(i);
- out:
- while (i == 1 || i == 3) {
- while (true) {
- i++;
- alert(i);
- if (i == 2) {
- continue;
- }
- else {
- continue out;
- }
- }
- i++;
- alert(i);
- }
- alert(i);
- // result:
而方法里的局部變量或內(nèi)嵌方法均存儲(chǔ)于此對(duì)象屬性中),JS兩種語法否則是全局對(duì)象的屬性,方法和變量是在不同時(shí)間被解析定義的,方法是在解析的時(shí)候被定義的,而變量是在運(yùn)行的時(shí)候被定義的。