!(not) 运算符在 switch case 中的用法
usage of !(not) operator in switch case
// checking whether a number is a multiple of 3 or not
for (let number = 1; number <= 100; number++) {
switch (number % 3) {
case !0: // Here I have used !(not) but it's not helping, I only want to know why '!' is not helping
console.log(`${number} is not multiple of 3`);
break;
default:
console.log(`${number} is multiple of 3`)
}
}
这里第一种情况不起作用。代码执行没有问题,但第一种情况根本没有帮助。完整的流程仅转到 'default:' 代码块。每当余数不等于0时,应该执行第一种情况的代码块,但它总是转到默认代码块。
!0
等于 true
,不等于 1
或 2
.
考虑这样写:
for (let number = 1; number <= 100; number++) {
switch (number % 3) {
case 0:
console.log(`${number} is multiple of 3`)
break;
default:
console.log(`${number} is not multiple of 3`);
}
}
在 JS 中,0 被认为是 falsy,这就是为什么 !0
将等于 true
(不是 falsy)。
至于你的开关,你可以反转你的开关并使用true
作为开关值。这些案例将有表达式来检查
for (let number = 1; number <= 100 ;number++ ) {
switch (true) {
case number % 3:
console.log(`${number} is not multiple of 3`);
break;
default:
console.log(`${number} is multiple of 3`)
}
}
你不能这样做,因为 !0 在 JavaScript 中总是 true 所以循环总是在第一种情况下进入
这样试试
for (let number = 1; number <= 100 ;number++ ) {
if(number % 3){
console.log(`${number} is not multiple of 3`);
}
else{
console.log(`${number} is multiple of 3`);
}
}
switch
语句接收 case
语句的值,而不是像 if
这样的表达式。因此,当 js 运行 你的代码时,它会将 !0
评估为 true
(假值的倒数为真)。
您必须将开关替换为 if
和 elses
:
for (let number = 1; number <= 100 ;number++ ) {
if ((number % 3) !== 0) {
console.log(`${number} is not multiple of 3`);
} else {
console.log(`${number} is multiple of 3`)
}
}
但是如果你反转逻辑你仍然可以使用 switch case 语句:
for (let number = 1; number <= 100 ;number++ ) {
switch (number % 3) {
case 0:
console.log(`${number} is multiple of 3`)
break;
default:
console.log(`${number} is not multiple of 3`);
}
}
但在这种情况下使用 switch case 确实没有任何意义,因为 if-else
更简单易读。
// checking whether a number is a multiple of 3 or not
for (let number = 1; number <= 100; number++) {
switch (number % 3) {
case !0: // Here I have used !(not) but it's not helping, I only want to know why '!' is not helping
console.log(`${number} is not multiple of 3`);
break;
default:
console.log(`${number} is multiple of 3`)
}
}
这里第一种情况不起作用。代码执行没有问题,但第一种情况根本没有帮助。完整的流程仅转到 'default:' 代码块。每当余数不等于0时,应该执行第一种情况的代码块,但它总是转到默认代码块。
!0
等于 true
,不等于 1
或 2
.
考虑这样写:
for (let number = 1; number <= 100; number++) {
switch (number % 3) {
case 0:
console.log(`${number} is multiple of 3`)
break;
default:
console.log(`${number} is not multiple of 3`);
}
}
在 JS 中,0 被认为是 falsy,这就是为什么 !0
将等于 true
(不是 falsy)。
至于你的开关,你可以反转你的开关并使用true
作为开关值。这些案例将有表达式来检查
for (let number = 1; number <= 100 ;number++ ) {
switch (true) {
case number % 3:
console.log(`${number} is not multiple of 3`);
break;
default:
console.log(`${number} is multiple of 3`)
}
}
你不能这样做,因为 !0 在 JavaScript 中总是 true 所以循环总是在第一种情况下进入
这样试试
for (let number = 1; number <= 100 ;number++ ) {
if(number % 3){
console.log(`${number} is not multiple of 3`);
}
else{
console.log(`${number} is multiple of 3`);
}
}
switch
语句接收 case
语句的值,而不是像 if
这样的表达式。因此,当 js 运行 你的代码时,它会将 !0
评估为 true
(假值的倒数为真)。
您必须将开关替换为 if
和 elses
:
for (let number = 1; number <= 100 ;number++ ) {
if ((number % 3) !== 0) {
console.log(`${number} is not multiple of 3`);
} else {
console.log(`${number} is multiple of 3`)
}
}
但是如果你反转逻辑你仍然可以使用 switch case 语句:
for (let number = 1; number <= 100 ;number++ ) {
switch (number % 3) {
case 0:
console.log(`${number} is multiple of 3`)
break;
default:
console.log(`${number} is not multiple of 3`);
}
}
但在这种情况下使用 switch case 确实没有任何意义,因为 if-else
更简单易读。