js中定時器呼叫函式時為什麼會有引號

2022-06-25 23:15:15 字數 1412 閱讀 4505

之前在學習的時候並沒有發現的細節,關於js中,定時器的問題

這裡我們寫兩個延時器

settimeout(func, 0);

settimeout("func()", 0);

定時器中,兩個呼叫函式的方法都是正確的。

或許有人問了,為什麼定時器呼叫函式的時候,有時候會寫引號,有時候沒有引號。

一開始我定時器都是像下面這樣寫的 ↓↓

settimeout(()=>, 0);

用箭頭函式的方式寫定時器,所以基本沒在意過這個問題。

當我後來看別人寫的**的時候,發現定時器的方法呼叫上居然還寫引號,還有這種呼叫方式嗎?

後來經過查閱資料了解到

當你想用定時器,呼叫函式的時候,給函式傳參的話,必須要加引號,否則會報錯

settimeout("func(a,b)", 0);

傳參a ,b 就可以這麼寫。

如果不傳參的話,完全可以寫成

settimeout(func, 0);

一問題得到解決從而表示你了解到的範圍就更大了,隨之而來的便是新的問題。

在定時器中加引號的同時,也會伴隨著作用域的改變

settimeout(func, 0);      //這個定時器,它會優先尋找當前的作用域中是否有func函式,如果區域性沒有的話,則會依次按照順序往上查詢,直到全域性作用域中。

settimeout("func()", 0);

//而這個定時器他的尋找func函式只會從全域性尋找這個方法,不會從區域性尋找。

同理而在定時器的函式中,this的指向也是不同的

在不加引號的定時器方法中

settimeout(func, 0);

this的指向是指向當前函式的主人

而在加引號的定時器中

settimeout("func()", 0);

他的指向永遠是 window

js實現定時器(定時執行函式)

全部 doctype html en utf 8 viewport content width device width,initial scale 1.0 document title var i 0 function show window.onload function 1000 script...

JS中兩種定時器

settimeout 在指定的毫秒後呼叫函式或者計算表示式 傳入三個引數 code 必需 要呼叫的函式後要執行的js 串 millisec 必需 在執行 前需等待的毫秒數 lang 可選一般不寫,選擇指令碼語言型別 setinterval 按照指定週期來呼叫函式或者計算表示式。方法會不停地呼叫函式,...

JavaScript中定時器函式的用法

最近寫了一些js指令碼,經常用到定時器,以下是我個人使用的一些總結。settimeout code,millisec code 定時器時間到了之後呼叫的函式 串 millisec 執行 前等待的毫秒數 型別1 定時器呼叫不帶引數的函式 function one 用法1 settimeout one,...