簡體   English   中英

function 的正確 javascript 語法

[英]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 中的一些類型

  1. 數字
  2. 細繩
  3. boolean
  4. 大批
  5. object
  6. 不明確的

您可以將類型用作

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 調用那樣使用; 相反,它是一個關鍵字,很像varreturn ,所以它通常不應該像這里使用的()一樣使用,而應該像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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM