首页 > 解决方案 > 使用 ?:(javascript 中的条件运算符)的函数解释

问题描述

我试图理解这个函数,它在我们给它一个数字时返回序数。

不幸的是,我无法弄清楚这是如何与条件运算符一起工作的,有人可以向我解释一下吗?

function getOrdinalNum(n) {
  return n + (n > 0 ? ['th', 'st', 'nd', 'rd'][(n > 3 && n < 21) || n % 10 > 3 ? 0 : n % 10] : '');
}

标签: javascriptternary-operator

解决方案


解释这类事情的最好方法是将其分解为带有if语句的函数。看一下newFunction它的作用与函数的作用相同getOrdinalNum

function getOrdinalNum(n) {
  return n + (n > 0 ? ['th', 'st', 'nd', 'rd'][(n > 3 && n < 21) || n % 10 > 3 ? 0 : n % 10] : '');
}

function newFunction(n) {
  if (n > 0) {
    if ((n > 3 && n < 21) || n % 10 > 3) {
      return n + 'th'; // essentially returning ['th', 'st', 'nd', 'rd'][0]; 
    } else {
      return n + ['th', 'st', 'nd', 'rd'][n % 10];
    }
  }
}

for(let i = 1; i < 9; i++) {
  console.log(getOrdinalNum(i));
  console.log(newFunction(i));
}


推荐阅读