почему это печатает привет только один раз, а не десять раз, когда я призываю его запустить десять раз

#javascript #function #settimeout

#javascript #функция #settimeout

Вопрос:

я пытаюсь создать код, который говорит привет в консоли консоли десять раз, но по какой-то причине он печатается только один раз

 function a(){console.log("hi")
setTimeout(function(){ }, 1);
}
a(10);  

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

1. Что заставляет вас думать, что он будет печатать десять раз? Можете ли вы объяснить свои рассуждения?

Ответ №1:

Позвольте мне попытаться дать вам сложный ответ.

С:

 a(10);
  

на самом деле вы вызываете вызываемую функцию a , и поскольку между скобками что-то есть, вы также передаете значение 10 этой функции.

Теперь, если мы посмотрим на ваше определение функции a :

 function a(){
}
  

мы можем видеть, что он не принимает никаких параметров из-за () .

Это означает, что переданное значение 10 никогда не будет использоваться.

Кроме того, внутри определения функции это:

 setTimeout(function(){ }, 1);
}
  

Это фактически задерживает выполнение function() на одну миллисекунду — но опять же — внутри функции ничего нет.
Подводя итог: вы просто вызываете a функцию один раз, и единственное, что происходит внутри, — это вход hi в консоль — один раз.

Теперь я, конечно, не уверен, чего вы пытаетесь достичь, но если вы просто хотите напечатать что-то на консоли десять раз, простой цикл for может сделать свое дело:

 function a() {
  console.log("hi");
}

for (var i = 0; i < 10; i  ) {
  a();
}  

В более сложном примере может даже использоваться значение, переданное функции:

 function a(param) {
  for (var i = 0; i < param; i  ) {
    console.log("hi");
  }
}

a(10);  

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

1. Нет проблем @codesforkids — я рад, если смогу помочь!