При чтении исходного кода, я увидел линиюпочему можно использовать SetTimeout ("1")
console.log(setTimeout("1"))
и этот код возвращает случайное число.
Я не знаю почему. Пожалуйста, помогите мне.
При чтении исходного кода, я увидел линиюпочему можно использовать SetTimeout ("1")
console.log(setTimeout("1"))
и этот код возвращает случайное число.
Я не знаю почему. Пожалуйста, помогите мне.
В соответствии с MDN,
Возвращенный timeoutID является числовым, ненулевое значение, которое идентифицирует таймер, созданный вызовом SetTimeout(); это значение можно передать в Window.clearTimeout(), чтобы отменить таймаут.
Так что, когда вы делаете = setTimeout()
, вы не получаете значение того, что вы прошли, но это сгенерированный системой идентификатор.
setTimeout
регистрирует событие в случае кучи после указанной задержки. Если задержка не упоминается, она принимает значение 0
, но примечание: setTimeout(notify, 0)
не такое же, как notify()
.
Также setTimeout
ожидает функцию как первый параметр. Когда он получает строку, он предполагает, что вы передаете вызов функции как строку, и компилятор пытается ее оценить, используя eval
. Таким образом, ваш setTimeout("1")
станет eval("1")
, который вернет "1"
и, следовательно, вы не получите ошибку.
function notify(){
console.log('ta-da!!!');
}
var a = 10;
setTimeout("notify()",0)
// sample for eval
console.log(setTimeout("a"))
// This should throw error as `b` is not declared
console.log(setTimeout("b"))
SetTimeout возвращает intervalID ... возможно, обзор [документация] (https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setTimeout) по возвращаемому значению ответит на ваш вопрос. – Gerrit0