Обзор структуры switch
1
Стоит вспомнить структуру switch
switch (expression) {
case value1:
//Statements executed when the
//result of expression matches value1
[break;]
case value2:
//Statements executed when the
//result of expression matches value2
[break;]
...
case valueN:
//Statements executed when the
//result of expression matches valueN
[break;]
[default:
//Statements executed when none of
//the values match the value of the expression
[break;]]
}
Чтопроизойдет, если я забуду перерыв на выключателе?(JS) 1
Если вы забудете break
, сценарий выполнит с того места, где выполняется условие, и выполнит следующее case
независимо, выполняется ли это условие или нет .
? Пример 01
// EXAMPLE01
var x = 1;
switch (x) {
case 0:
case 1: // x is 1, therefore the condition is fulfilled and the next block is executed
doThis ();
// NOTE: the forgotten "break" should be here
case 2: // There is no "break" sentence in the 'case 12:', therefore this case will also be executed
doSomethingElse ();
break; // When finding a "break", the 'case 2:' will not be executed.
default:
console.log ('default');
}
/**
* Testing functions
*/
function doThis () {
console.log ('This case is one');
}
function doSomethingElse () {
console.log ('This case is two');
}
Советы
При каждом переключении его следует ставить
default
так что если он не найдет ожидаемое в финализации case
с требуемым действием.
Сравнения в JS в переключателе
Для сравнения мы должны использовать равенство иИдентификаторы сравнения и, если необходима логика ( Подробнее см. в Операторы ):
? Пример 02-A
// EXAMPLE 02.A
var x = 2;
switch (true) {
case (x === 1 || x === 0): // Not true when x = 2;
doThis ();
doSomethingElse ();
break;
case (x === 2): // Will be executed
doSomethingElse ();
break;
default:
console.log ('default');
}
/**
* Testing functions
*/
function doThis () {
console.log ('This case is one');
}
function doSomethingElse () {
console.log ('This case is two');
}
Или мы также можем использовать операторы <
или >
:
? Пример 02-B
// EXAMPLE 02.B
x = 2;
switch (true) {
case (x === 1 || x === 0): // Not true when x = 2;
doThis ();
doSomethingElse ();
break;
case (x> 1 || x> 3): // Will be executed
doSomethingElse ();
break;
default:
console.log ('default');
}
/**
* Testing functions
*/
function doThis () {
console.log ('This case is one');
}
function doSomethingElse () {
console.log ('This case is two');
}
Запустить вложенный переключатель
Чтобы сделать переключатель с более продвинутым уровнем в плане сравнения, вы можете использовать условное (if ... else
,etc ) или циклы как continue
.
? Пример 03
// EXAMPLE 03
var x = 2;
switch (true) {
case (x === 1 || x === 0):
doThis ();
doSomethingElse ();
break;
case (x> 1 || x> 4): // Will be executed
if (x === 1) {
// It will not run
console.log ('Its not the desired number');
} else if (x === 2) {// It will be executed and it will end
doSomethingElse ()
}
break;
default:
console.log ('default');
}
/**
* Testing functions
*/
function doThis () {
console.log ('This case is one');
}
function doSomethingElse () {
console.log ('This case is two(2)');
}
✏️ Аннотации
Различия между ===
и ==
3
Операторы ===
и ! ==
являются строгими операторами сравнения .Это означает, что если операнды имеют разные типы, они не одинаковы.Например,
1 === "1" // false
1! == "1" // true
null === undefined // false
Операторы ==
и ! =
являются операторами сравнения relaxed .То есть, если операнды имеют разные типы, JavaScript пытается преобразовать их в сопоставимые.Например,
1 == "1" // true
1! = "1" // false
null == undefined // true
Стоит отметить, что оператор ==
не является транзитивным , в отличие от ===
.
"0" == 0 // true
0 == "" // true
"0" == "" // false