enter3017sky / mentor-program-2nd-blog

MTR02 學習紀錄
1 stars 2 forks source link

[筆記][JS101] 判斷式 #11

Open enter3017sky opened 6 years ago

enter3017sky commented 6 years ago

if else 判斷式

if(true){
  console.log('hello')
}
// result => hello
if(10 > 5){
  console.log('true')
}
// result => true

if...else... 如果(就做什麼事情)...否則(就做什麼事情)...

var score = 65
if (score >= 60) {
  console.log('pass')
} else {
  console.log('fail')
}
// result = pass

var score = 50
if (score >= 60) {
  console.log('pass')
} else {
  console.log('fail')
}
// result = fail

多組條件必須用&&(and) 或 ||(or)連接起來


var score = 65
if (score <= 70 >= 60) {
  console.log('pass')
}
// 如果用以上多組條件,不會被執行

var score = 65
if (score <= 70 && score >= 60) {
  console.log('pass')
}
// result = pass
// 多組條件必須用&&(and) 或 ||(or)連接起來
var number = 10
//如果 number 對 5 取餘數是 0 的話
if (number % 5 === 0) {   
  console.log('是5的倍數')
} else {
  console.log('不是')
}

var number = 10
if (number % 5) {   // if => true才執行,所以執行else
  console.log('不是')
} else {
  console.log('是5的倍數')
}

var number = 10
if  (!(number % 5)) {
  console.log('是5的倍數')
} else {
  console.log('不是')
}
/*
(number % 5) => 0
0 經過 not 變成 1
!(0) => 1 
所以會 result = 是5的倍數
比較少用,可讀性比較差
*/
enter3017sky commented 6 years ago

if/else if statement

var age = 10
if (age >= 65) {
  console.log('old man')
} else {
  if (age >= 20) {
    console.log('young')
} else {
    console.log('children')
}

if (age >= 65) {
  console.log('old man')
} else if (age >= 40) {
  console.log('壯年')
} else if (age >= 20) {
  console.log('young')
} else if (age >= 10) {
  console.log('children')
} else {
  console.log('baby')
}

加上 function

function ageTest(age){
  if (age >= 65) {
    console.log('老人')
  } else if (age >= 40) {
    console.log('壯年')
  } else if (age >= 20) {
    console.log('年輕人')
  } else if (age >= 10) {
    console.log('小屁孩')
  } else {
    console.log('baby')
  }
}
ageTest(8)
ageTest(15)
ageTest(25)
ageTest(45)
ageTest(66)
enter3017sky commented 6 years ago

假如條件太多的話,用switch case

if (month === 1){
    console.log('一月')
} else if (month === 2) {
    console.log('二月')
...
} else if (month === 6) {
    console.log('六月')
}

switch case

break: 執行完,跳出,終止當前的循環。 default: 如果前面都不符合的話,執行這個。

var month = 3

switch (month) {
  case 1:
    console.log('一月')
    break   //  break: 執行完,跳出
  case 2:
    console.log('二月')
    break
  case 3:
    console.log('三月')
    break
  default:   //   default: 如果前面都不符合的話,執行這個
    console.log('冬天')
}

同時執行多組條件

/* case 可以同時多組
如果沒有加 break ,下面的也會印出來
*/
switch (month) {
  case 1:
  case 2:
  case 3:
    console.log('春天')
    break
  case 4:
  case 5:
  case 6:
    console.log('夏天')
    break
  default:
    console.log('秋天或冬天')
}

其他範例

function switchMonth(month){
  switch (month) {
    case 1: case 2: case 3:
      console.log('春天')
      break
    case 4: case 5: case 10:
      console.log('夏天')
      break
    default:
      console.log('秋天或冬天')
  }
}
switchMonth(3)
switchMonth(5)
switchMonth(7)

其他範例二

function switchMonth(month){
  let result = '';
  switch (month) {
    case 1: case 2: case 3:
      result = '春天';
      break
    case 4: case 5: case 10:
      result = '夏天';
      break
    default:
    result = '秋天或冬天';
  }
  return result;
}
console.log(switchMonth(3))
console.log(switchMonth(5))
console.log(switchMonth(7))

用陣列的方式更好

var month = 6
var month_to_chinese = ['一月', '二月', '三月', '四月', '五月', '六月']
console.log(month_to_chinese[month - 1]) //month_to_chinese 的 month - 1

參考資料:switch statementbreak statementdefault keyword

enter3017sky commented 6 years ago

三元運算子(Ternary)

Syntax: condition ? expr1 : expr2

var score = 60
var message = ''
if (score >= 60) {
  message = 'pass'
} else {
  message = 'fail'
}
console.log(message)

以上的範例中,用三元運算子可以簡化成以下的範例

var score = 60
var message = score >= 60 ? 'pass' : 'fail'
console.log(message)
// result => pass
enter3017sky commented 6 years ago

判斷式練習題

js101_lv0_練習一:判斷是否及格 201809062324

function score (n) {
  if (n >= 100) {
    return 'You are NO.1'
  } if (n >= 60) {
    return 'pass'
  } else {
    return 'fail'
  }
}
console.log(score(59))  => // fail
console.log(score(60))  => // pass
console.log(score(100))  => // You are NO.1

js101_lv0_練習二:判斷是否及格 201809062341


function bmi (n) {
  if (n < 18.5) {
    console.log('體重過輕')
  } if (n >= 18.5 && n < 24) {
    console.log('正常範圍')
  } if (n >= 24 && n < 27) {
    console.log('過重')
  } if (n >= 27 && n < 30) {
    console.log('輕度肥胖')
  } if (n >= 30 && n < 35) {
    console.log('中度肥胖')
  } if (n >= 35) {
    console.log('重度肥胖')
  }
}

bmi(36) // result => 重度肥胖
bmi(28) // result => 輕度肥胖
bmi(18) // result => 體重過輕