詳細(xì)介紹JS兩種語(yǔ)法使用說(shuō)明
后面跟任意的表達(dá)式,JS兩種語(yǔ)法有明顯不同。匹配時(shí)會(huì)先計(jì)算case后面的表達(dá)式再匹配。匹配時(shí)用的是 === 符號(hào),而不是 == 符號(hào),所以匹配過(guò)程不允許任何類型轉(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'
 
語(yǔ)法:for(variable in object)
其中 variable  允許任意的表達(dá)式,只要計(jì)算結(jié)果能作為賦值表達(dá)式的左側(cè),迭代對(duì)象屬性名時(shí)并不保證任何特殊的迭代順序,它也只迭代用戶自定義的屬性,而預(yù)定義的屬性和方法是不會(huì)迭代的(比如:Math 的 cos 屬性)數(shù)組本身是一種特殊的對(duì)象,當(dāng)JS兩種語(yǔ)法應(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兩種語(yǔ)法當(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兩種語(yǔ)法否則是全局對(duì)象的屬性,方法和變量是在不同時(shí)間被解析定義的,方法是在解析的時(shí)候被定義的,而變量是在運(yùn)行的時(shí)候被定義的。















 
 
 
 
 
 
 