簡體   English   中英

javascript代碼片段說明

[英]javascript code fragment explanation

fnTest = /xyz/.test(function () {
        xyz;
    }) ? /\bparent\b/ : /.*/;

我無法理解此javascript代碼片段的工作方式。 有人可以解釋一下這個代碼片段的邏輯嗎?

瀏覽器並不總是對函數使用相同的toString()實現。 某些瀏覽器將以字符串形式返回該函數的代碼,而其他瀏覽器則不會。

該表達式的第一部分確定瀏覽器是否在toString()使用該函數的代碼,因為/xyz/.test(function () { xyz; })僅在調用toString()的結果中找到字符串xyz時才為true toString()表示該功能。

表達式的其余部分是三元數,其結果將為/\\bparent\\b//.*/ ,因此可以將整個表達式總結如下:“如果瀏覽器在toString()使用函數的代碼,則設置fnTest到Regexp /\\bparent\\b/ ,否則將fnTest設置為/.*/

如果要對函數執行某些操作,則可以使用此函數,但是您知道只需要對包含名為parent的變量的函數執行此操作。 在受支持的瀏覽器上,您可以使用fnTest.test(some_function)來查看some_function包含parent ,對於由於toString()實現而無法做出此確定的瀏覽器, fnTest.test(some_function)始終會返回true,因為/.*/將匹配所有字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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