JavaScript同樣的意思,更巧的寫法


   今天來介紹一下javascript不一樣的寫法,很簡單哦。

1、當條件成立時執行a方法,當條件失敗是執行b方法

通常我們會這樣寫:

var result;
if(isOk){
  result=funA();
}else{
 result=funB();
}

還可以這樣表達:

 var result=isOk? funA():funB()

2、當條件成立執某個方法

通常方式:

 if(isOk){
     doSomething();
 }

我更喜歡這樣寫:

isOk&&doSomething();

如果一個變量沒定義或沒有值則給它一默認值

str=str||"ok";
arr=arr||[];

上面的方式可行,是因為在js邏輯運算中,返回值不一定是true或false,也可以是其他任何值,而且 0、""、null、false、undefined、NaN都會判為false,其他都為true。舉例:

1&&"OK"  //表達式的值為字符串"OK",邏輯上被判定為 true
1||"OK"  //表達式的值為數字1,邏輯上被判定為 true
null||[]  //表達式的值為數組[],邏輯上被判定為 true
null&&[]  //表達式的值為null,邏輯上被判定為 false

3、當進行多個條件判段時

    給一個例子:每種顏色對應一個值,比如"white","red","green","yellow","gray","blue" 分別對應的值為0,1,2,3,4,5

1) 問題一:根據值獲取顏色

實現方式一

function getColorByVal(val) {
    var color = "";
    if (val == 0){
        color = "white";
    }else if (val == 1) {
        color = "red";
    } else if (val == 2) {
        color = "green";
    } else if (val == 3) {
        color = "yellow";
    } else if (val == 4) {
        color = "gray";
    } else if (val == 5) {
        color = "blue";
    } 
    return color;
}

實現方式二

function getColorByVal(val) {
    var color;
    switch (val) {
        case 0:
            color = "white";
        case 1:
            color = "red";
            break;
        case 2:
            color = "green";
            break;
        case 3:
            color = "yellow";
            break;
        case 4:
            color = "gray";
            break;
        case 5:
            color = "blue";
            break;
             
    }
    return color;
}

實現方式三

function getColorByVal(val) {
   return ["white","red","green","yellow","gray","blue"][val];
}

調用: var color=getColorByVal(2);

方式一和方式二相比沒什么差別,但方式二稍微好一點,而方式三則是讓人眼前一亮,短小精悍就完成了功能。不過有的人會說顏色的值剛好是數組下標,所以我們再來一題:

2) 問題二:根據顏色獲取值

你可以用if 或switch 語句來完成,不過這里給出另外兩種方式:

方式一:

function getValByColor(color){
    var colors=["white","red","green","yellow","gray","blue"];
    var result;
     for(var i=colors.length;i--;){
        if(colors[i]==color){
            result=i;
            break;
        }
     }
     return result;
}

方式二:

function getValByColor(color){
    return {"white":0,"red":1,"green":2,"yellow":3,"gray":4,"blue":5}[color];
}

調用: var val=getValByColor("red");

對比一下很明顯,方式二更簡單而且易懂,巧妙在於構造一個對象,通過屬性獲取值,從而避開了繁瑣的判斷。

 4、交換兩個變量的值

通常是這樣實現的:

var temp=0,a=5,b=10;
temp=a;
a=b;
b=temp;

不過還可以更巧一些:

var a=5,b=10;
a=[b,b=a][0];
a=[b,b=a][0] 執行過程:先執行數組里兩個表達式b和b=a,作用是把5賦值給b並產生一個數組[10,5] ,然后 a=[10,5][0]即 a=10,這樣就完成了交換,不過也借助了無名的數組,但看起來好想沒借助第三個變量,不過不提倡這樣做,畢竟第一種方式更易懂。

5、獲取對象的屬性

方式一
var arr=[],i=0;
var colors={"white":0,"red":1,"green":2,"yellow":3,"gray":4,"blue":5};
for(var key in colors){
   arr[i++]=key;
}

方式二

var arr=[],i=0;
var colors={"white":0,"red":1,"green":2,"yellow":3,"gray":4,"blue":5};
 for(arr[i++] in colors);

      兩種方式都得到了對象colors的屬性(arr=["white", "red", "green", "yellow", "gray", "blue"]), 第二種方式不過搭了 for in 語句的順風車。方式一中for in語句依次從colors獲取一個屬性賦值給key,只不過在方式二中賦值給了arr[i++]。這個純粹是為了好玩,享受編程的樂趣也是編程的一部分吧。。

   是不是發現javascript也很有意思呢? 有意思就推薦一下吧。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM