[英]Correct javascript syntax for function
我一直在我運行的網站上查看一些舊的 javascript - 舉起手來,我對 javascript 知之甚少。
我遇到了以下 function:
var timeout = null;
function textareaResize() {
if (typeof(timeout))
clearTimeout(timeout);
timeout = setTimeout(function () {
refreshAutoGrowFields();
}, 200);
}
智能感知告訴我語法typeof(timeout)
無效,更具體地說是“意外的常量條件”,但這對我來說毫無意義。
如果有人可以解釋實際應該存在什么(如果智能感知在其假設中是正確的),我將不勝感激。
typeof 將返回您放入其中的變量的類型。
這些是 JavaScript 中的一些類型
您可以將類型用作
let s1 = 'somevalue'
cosole.log(typeof(s1)) // prints 'string'
您可以使用它並更改 s1 的內容。 現在到比較部分,如果你嘗試類似
if(typeof(s1)=='number')
dothis()
else if (typeof(s1)=='string')
dothat()
提示:兩者相同
typeof s1
typeof(s1)
並且 typeof(typeof(someVar)) 始終是字符串,這就是 == 運算符起作用的原因
希望它有所幫助,並沒有進一步混淆你。
我不確定 function 是在哪里找到的,但這絕對令人困惑,因為它實際上是不准確的 JavaScript。
它試圖做的是讓所謂的超時,這意味着一段時間后某個動作或代碼集合的執行。
為了做到這一點,它試圖將這個“超時” function 設置為一個名為“超時”的預定義變量。
問題是,在他們將其設置為變量“超時”之前,出於某種原因,他們希望確保尚未設置超時。 也許通過將其兩次設置為 setTimeout,它可能會導致多個函數在相同的時間內發生(但可能不會)。
無論如何,為了做到這一點,他們試圖檢查之前是否設置了“超時”。
問題是他們檢查typeof(timeout)
的方式是完全不正確的,原因有兩個。
首先,術語“typeof”通常不像function 調用那樣使用; 相反,它是一個關鍵字,很像var
或return
,所以它通常不應該像這里使用的()
一樣使用,而應該像typeof timeout == "null"
一樣使用,但問題是即使這樣的語法也會完全無效,因為即使它是 null,它也不會評估為“null”,它會評估為“object”,只需嘗試將以下 JavaScript 粘貼到控制台中:
typeof null
它應該說“object”,即使typeof undefined
是“undefined”,它是一個字符串,當放在if語句中時,相對而言仍然會評估為true
,所以if語句檢查是否定義了超時完全錯誤。
相反,該 if 語句應該簡單地更改為if(timeout)
,完全刪除typeof
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.