Почему мы возвращаем только между ними, если условие. Кто-нибудь может помочь мне понять это состояние?
if (!name.trim()) {
return;
}
Почему мы возвращаем только между ними, если условие. Кто-нибудь может помочь мне понять это состояние?
if (!name.trim()) {
return;
}
В javascript все значения "falsy" оцениваются как false. Все приведенные ниже примеры считаются "ложными":
.false
- ключевое слово false0
- число ноль""
- пустая строкаnull
undefined
NaN
Что делает trim()
, так это то, что он удаляет конечные и начальные пробелы из строки. Таким образом, этот код просто означает «после удаления конечных и начальных пробелов из строки, если строка пуста, ничего не возвращать».
Логическое ([]) = истина
Также вы забыли null и undefined в этом списке...
На самом деле, когда мы используем return
в этой ситуации, мы получили ожидаемый результат, и нам не нужно продолжать тело функции. Поясним на примере. Предположим, что мы хотим найти 75 из цикла с индексом и вернуть результат. Когда мы нашли результат, нам не нужно выполнять оставшуюся часть тела функции. В этом примере также вычисляется время между тем, когда вы не выполняете оставшееся тело функции, и когда вы выполняете оставшееся тело функции. Вы увидите, что это также влияет на время выполнения.
function testWithoutReturn() {
let result = 0;
let t1 =new Date();
for (let i = 0; i < 100; i++) {
if (i == 75) {
result = 75
console.log("result founded but I will continue the loop needles!")
}
console.log(i);
}
let t2 = new Date();
getTimeDif(t1,t2)
}
function getTimeDif(t1,t2){
var dif = t1.getTime() - t2.getTime();
var sconds = dif / 1000;
var result = Math.abs(sconds);;
console.log(result)
}
testWithoutReturn()
function testWithReturn() {
let result = 0;
let t1 =new Date();
for (let i = 0; i < 100; i++) {
if (i == 75) {
result = 75
console.log("result founded and it doesn't need to continue loop")
let t2 = new Date();
getTimeDif(t1,t2)
return;
}
console.log(i)
}
}
function getTimeDif(t1,t2){
var dif = t1.getTime() - t2.getTime();
var sconds = dif / 1000;
var result = Math.abs(sconds);;
console.log(result)
}
testWithReturn()
Мы возвращаемся только для того, чтобы прекратить выполнение функции:
Вот пример с возвратом:
const test = Array(100).fill(1)
const getFifty = (arr) => {
let sum = 0
for(let i = 0; i < 50; i++){
sum += arr[i]
if(sum >= 50){
console.log("Sum is fifty at index" , i)
return
}
}
console.log("Sum is never fifty")
}
getFifty(test)
Вот пример без возврата:
const test = Array(100).fill(1)
const getFifty = (arr) => {
let sum = 0
for(let i = 0; i < 50; i++){
sum += arr[i]
if(sum >= 50){
console.log("Sum is fifty at index" , i)
}
}
console.log("Sum is never fifty")
}
getFifty(test)
Мы возвращаемся к нему, потому что нам не нужно запускать код после условия. Повышение производительности и чистый код
"увеличить производительность" по сравнению с чем? Почему это "чистый код"?
1. we will haven't to run code after the conđition
!name.trim()
— это условие будет истинным, еслиname
— пустая строка. Если строка пустая, то делать ничего не нужно, поэтому простоreturn
из функции. По сути, вы хотите выполнить свою функцию за пределами этого условия, только если строка не пуста.Как выглядит остальная часть функции? Знакомы ли вы с семантикой оператора
return
?