javascript不一樣的寫法

2021-06-20 13:02:46 字數 2715 閱讀 8495

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

通常我們會這樣寫:

var

result;

if(isok)

else

還可以這樣表達:

var result=isok? funa():funb()
2、當條件成立執某個方法

通常方式:

if

(isok)

我更喜歡這樣寫:

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) 問題一:根據值獲取顏色

實現方式一

?

functiongetcolorbyval(val)elseif(val == 1)elseif(val == 2)elseif(val == 3)elseif(val == 4)elseif(val == 5)

returncolor;

}

實現方式二

function

getcolorbyval(val)

return

color;

}

實現方式三

?

functiongetcolorbyval(val)

呼叫: var color=getcolorbyval(2);

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

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

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

方式一:

function

getvalbycolor(color)

}return

result;

}

方式二:

function

getvalbycolor(color)[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=;

for(var key in

colors)

方式二

var arr=,i=0;

var colors=;

for(arr[i++] in colors);

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

不一樣又不一樣的 木板接水

空地上豎立著n個從左到右排列的木板,它們可以把水擋住,但溢位最邊上木板的水將會流到空地上。已知木板間距都是單位1,現給定每個木板的高度,請求出總共能接住的水量?說明一點,這裡只考慮間距 寬度 和高度,不考慮第三個維度,因此水量是平方單位。木板高度分別是2,1,3,那麼我們可以接住2 2 4平方單位的...

我們不一樣

前輩們因自身實際的種種因素的影響而產生的認知,並不一定適用於我們自身。你可能從來不會去想乙個問題 你的觀點,來自 其實,它們絕大部分來自網路,它們或多或少地蠶食了你的判斷力。未來的路要怎麼走,沒有對與錯。有的,只是每乙個選擇所需要承擔的責任。我不想面臨,後之視今亦猶今之視昔的悲哀。我希望,未來回首,...

我們不一樣

這麼多年的兄弟 有誰比我更了解你 太多太多不容易 磨平了歲月和脾氣 時間轉眼就過去 這身後不散的筵席 只因為我們還在 心留在原地 張開手 需要多大的勇氣 這片天 你我一起撐起 更努力 只為了我們想要的明天 好好的 這份情好好珍惜 我們不一樣 每個人都有不同的境遇 我們在這裡 在這裡等你 我們不一樣 ...