javascript - masalah fungsi tanpa nama pemasa
高洛峰
高洛峰 2017-05-19 10:36:56
0
3
449
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

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

membalas semua(3)
阿神

Parameter pertama setInterval menerima rentetan dan akan menghuraikan rentetan ke dalam pernyataan fungsi untuk pelaksanaan.

大家讲道理

Mula-mula mari kita lihat penjelasan W3C tentang setInterval

dan kemudian lihat

  1. setInterval("ssss()", 1000);

  2. 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

某草草

Jika anda tidak menambah petikan berganda, anda perlu mengalih keluar tanda kurung dan hanya menulis nama fungsi

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan