[英]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.