在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ js switch奇怪的問題

js switch奇怪的問題

var result_time = 45852221;
var simple_text;

switch (result_time) {

    case result_time < 60:

        simple_text =  '剛剛';

        break;


    case  result_time > 60 && result_time < 3600 : //分鐘前

        simple_text = Math.round(result_time/60)+'分鐘前';


        break;


    case  result_time > 3600 && result_time < 86400 : //小時前

        simple_text = Math.round(result_time/60/24)+'小時前';

        break;

    case  result_time > 86400 && result_time < 2592000 : //天前

        simple_text = Math.round(result_time/60/60/24)+'天前';


        break;

    case  result_time > 2592000 && result_time < 31104000 : //月前

        simple_text = Math.round(result_time/60/60/24/30)+'月前';


        break;


    case  result_time > 31104000: //年前

        simple_text = Math.round(result_time/60/60/24/30/12)+'年前';


        break;
}
document.write(simple_text)

如上圖所示,這是一個簡化時間的判斷語句,為什么它判斷不出任何case?

回答
編輯回答
愛礙唉

因為switch-case根本不是這么用的,case里的是值而不是布爾表達式。這樣你的每個case都是一個布爾值:truefalse,而result_time既不是true也不是false,當然判斷不出來。只能用if-else,或者根據具體規(guī)則手動寫表達式判斷。

2017年10月16日 00:11
編輯回答
風清揚

switch (result_time)改為switch (true)就行

switch的用法:

switch (expression)
  case value:
    statement;
    break;
  case value:
    statement;
    break;

expressionvalue可以是值,也可以是表達式(表達式其實也是值,1 < 2 等價于 true),
只要expression等于value就會執(zhí)行相關語句

比如:

switch (1 < 2)
{
    case true:
        console.log('true');
        break;
    case false :
        console.log('false');
        break;
}
switch (true)
{
    case 1 < 2:
        console.log('true');
        break;
    case 1 > 2 :
        console.log('false');
        break;
}

上面兩個代碼其實是一樣的

2017年4月23日 18:44
編輯回答
青檸

題主跑來提問題之前不會先搜一下文檔么?

MDN switch-case

2018年7月21日 06:57