之前在學習的時候並沒有發現的細節,關於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,...