if(!q || q === ‘*’) почему здесь в качестве строки используется подстановочный знак?

#javascript #angular

#javascript #угловой

Вопрос:

 search(q: string): Observable<any> {
if(!q || q === '*') {
  q = '';
} else {
  q = q.toLowerCase();
}
 

В условии if почему здесь в качестве строки используется подстановочный знак? Пожалуйста, объясните это.

Комментарии:

1. Поиск ‘*’ = поиск пусто

Ответ №1:

регулярное выражение выполняет поиск пустого значения, включая пробелы и табуляции /^s*$/ . Регулярные выражения не используют исключительно «*», это количество совпадений от 0 до бесконечности.

 console.log(/^s*$/.test(""));
console.log(/^s*$/.test(" "));
console.log(/^s*$/.test("*")); 

Ответ №2:

Я не думаю, что это действительно работает. На самом деле он работает как обычный компаратор строк, где он соответствует «*» .

пожалуйста, посмотрите ссылку https://www.w3schools.com/js/js_regexp.asp

Ответ №3:

Это не подстановочный знак. * это обычная строка. Что делает эта функция, так это принимает строку q в качестве аргумента, если она не определена, или равна нулю, или пуста, или равна * , тогда она просто вернет пустую строку, в противном случае она вернет строку в нижнем регистре q