使用?:(javascript中的条件运算符)的函数说明
我试图理解这个函数,当我们给它一个数字时,它返回序数 不幸的是,我无法理解这是如何与条件运算符一起工作的,有人能给我解释一下吗使用?:(javascript中的条件运算符)的函数说明,javascript,ternary-operator,Javascript,Ternary Operator,我试图理解这个函数,当我们给它一个数字时,它返回序数 不幸的是,我无法理解这是如何与条件运算符一起工作的,有人能给我解释一下吗 function getOrdinalNum(n) { return n + (n > 0 ? ['th', 'st', 'nd', 'rd'][(n > 3 && n < 21) || n % 10 > 3 ? 0 : n % 10] : ''); } 函数getOrdinalNum(n){ 返回n+(n>0?['th',
function getOrdinalNum(n) {
return n + (n > 0 ? ['th', 'st', 'nd', 'rd'][(n > 3 && n < 21) || n % 10 > 3 ? 0 : n % 10] : '');
}
函数getOrdinalNum(n){
返回n+(n>0?['th','st','nd','rd'][(n>3&&n<21)| n%10>3?0:n%10]:'';
}
将其分解如下:
n +
(
n > 0
? ['th', 'st', 'nd', 'rd']
[
(n > 3 && n < 21) || n % 10 > 3
? 0
: n % 10
]
: ''
);
n+
(
n>0
?[‘th’、‘st’、‘nd’、‘rd’]
[
(n>3&&n<21)| n%10>3
? 0
:n%10
]
: ''
);
在这里:
n>0
。如果是,则:
['th','st','nd','rd']
[]
告诉我们将有一个0
(表示(th
)或n&10的结果
n
中n
小于或等于0
,则无论n
是什么,都会向其添加一个空字符串这有助于了解答案。好好阅读并练习一下。将其分解如下:
n +
(
n > 0
? ['th', 'st', 'nd', 'rd']
[
(n > 3 && n < 21) || n % 10 > 3
? 0
: n % 10
]
: ''
);
n+
(
n>0
?[‘th’、‘st’、‘nd’、‘rd’]
[
(n>3&&n<21)| n%10>3
? 0
:n%10
]
: ''
);
在这里:
n>0
。如果是,则:
['th','st','nd','rd']
[]
告诉我们将有一个0
(表示(th
)或n&10
n
中n
小于或等于0
,则无论n
是什么,都会向其添加一个空字符串它有助于了解函数。请仔细阅读并进行一些练习。解释这类事情的最佳方法是使用
if
语句将其分解为一个函数。看看newFunction
它与函数getOrdinalNum
的功能相同:
函数getOrdinalNum(n){
返回n+(n>0?['th','st','nd','rd'][(n>3&&n<21)| n%10>3?0:n%10]:'';
}
函数newFunction(n){
如果(n>0){
如果((n>3&&n<21)|n%10>3){
返回n+'th';//本质上返回['th',st',nd',rd'][0];
}否则{
返回n+['th','st','nd','rd'][n%10];
}
}
}
for(设i=1;i<9;i++){
console.log(getOrdinalNum(i));
console.log(newFunction(i));
}解释这类事情的最佳方法是使用
if
语句将其分解为一个函数。看看newFunction
它与函数getOrdinalNum
的功能相同:
函数getOrdinalNum(n){
返回n+(n>0?['th','st','nd','rd'][(n>3&&n<21)| n%10>3?0:n%10]:'';
}
函数newFunction(n){
如果(n>0){
如果((n>3&&n<21)|n%10>3){
返回n+'th';//本质上返回['th',st',nd',rd'][0];
}否则{
返回n+['th','st','nd','rd'][n%10];
}
}
}
for(设i=1;i<9;i++){
console.log(getOrdinalNum(i));
console.log(newFunction(i));
}运算符(一元、二元、三元)
三值条件运算符不同于大多数其他运算符,因为它需要3个操作数,而不是一个或两个操作数
您习惯于使用一元运算符,如-5
中的负号,它接受一个操作数并使其成为负值
还有二进制串联运算符+
像'hello'+'world'
一样使用。这里有两个操作数产生值'hello world'
三元条件运算符的形式为
/* conditional expression */ ? /* expression if truthy */ : /* expression if not truthy*/
其中,注释是操作数,您可以用示例中更复杂的代码填充。//如果n>0,则为复杂表达式,否则为空字符串
简单的例子。
尝试在浏览器中运行以下语句
console.log(true ? 'true value' : 'false value');
var x = 3 > 1 ? 'true value' : 'false value';
console.log(x);
prompt('try entering a blank space, or characters') ? 'a' : 'b';
代码流程与其他答案描述的基本相同。如果条件为真,则发出第一个表达式,否则发出第二个表达式
运算符(一元、二元、三元)
三值条件运算符不同于大多数其他运算符,因为它需要3个操作数,而不是一个或两个操作数
您习惯于使用一元运算符,如-5
中的负号,它接受一个操作数并使其成为负值
还有二进制串联运算符+
像'hello'+'world'
一样使用。这里有两个操作数产生值'hello world'
三元条件运算符的形式为
/* conditional expression */ ? /* expression if truthy */ : /* expression if not truthy*/
其中,注释是操作数,您可以用示例中更复杂的代码填充。//如果n>0,则为复杂表达式,否则为空字符串
简单的例子。
尝试在浏览器中运行以下语句
console.log(true ? 'true value' : 'false value');
var x = 3 > 1 ? 'true value' : 'false value';
console.log(x);
prompt('try entering a blank space, or characters') ? 'a' : 'b';
代码流程与其他答案描述的基本相同。如果条件为真,则发出第一个表达式,否则发出第二个表达式
可能的重复也是一个好主意。但是,为了更容易理解,我建议分解这些操作(
返回n+['th','st','nd','rd'][n%10];
)在不同的变量中,例如:索引选择
,选择
,最终结果
,这也是一个好主意。但是,为了更容易理解,我建议分解这些操作(返回n+['th','st','nd','rd'][n%