Rumah > Soal Jawab > teks badan
var a = 0;
function fn(){
ssss.call(null,a)
// 为什么 定时器里面的匿名函数加上字符串跟直接执行不同???
setInterval("ssss()", 1000);
setInterval(ssss(), 1000);
}
function ssss(){
console.log(++a)
}
fn();
Sila minta tuan untuk menerangkan prinsip disebaliknya
阿神2017-05-19 10:38:56
Parameter pertama setInterval menerima rentetan dan akan menghuraikan rentetan ke dalam pernyataan fungsi untuk pelaksanaan.
大家讲道理2017-05-19 10:38:56
Mula-mula mari kita lihat penjelasan W3C tentang setInterval
dan kemudian lihat
setInterval("ssss()", 1000);
setInterval(ssss(), 1000);
1 Kemudian ralat akan dilaporkan semasa melaksanakan
2. Fungsi badan ssss()
function ssss(){
console.log(++a)
}
Tiada nilai pulangan, tetapi ambil perhatian bahawa terdapat ayat ssss.call(null,a) dalam fungsi fn, maka terdapat nilai pulangan dalam fungsi fn. Selain itu, nilai pulangan hanyalah fungsi, jadi ia memenuhi keperluan fungsi setInterval dan akan terus dilaksanakan
某草草2017-05-19 10:38:56
Jika anda tidak menambah petikan berganda, anda perlu mengalih keluar tanda kurung dan hanya menulis nama fungsi