簡體   English   中英

在JavaScript中使用(.code)的目的是什么?

[英]What is the purpose of using (.code) in Javascript?

我在Javascript中有一個代碼,該代碼運行帶有引用.code的If語句。 我到處搜索以查找原因,但沒有找到有用的答案。 這是一個例子:

function X(Y) {
    if ((ord.status == JSON.stringify( (JSON.parse(ord.status).code == ordStatus.Del.code)){ 
        //code here 
    }
} 

.code在這里不是“擴展名”。 它是對Javascript對象的code屬性的引用。

在這里, ord.status是一個字符串,可以將其解析為包含code屬性的Javascript對象。

JSON.parse(ord.status)ord.status字符串解析為Javascript對象。 然后, .code引用該對象中的code屬性。

正如我評論的那樣,您的括號不匹配,這意味着這段JavaScript無效。 但是,我將進行一次誠信分析,並假設缺少的括號將在if表達式的末尾出現在主體之前。

由於您的問題似乎是關於對其應用了該.codeif語句的,因此讓我們僅使用Mozilla的有關運算符優先級的文檔進行語法分析,以了解發生了什么情況。 我們將在// code here使用假設方法m替換// code here ,然后使用I表示標識符, E表示表達式和S表示語句:

if ((ord.status == JSON.stringify( (JSON.parse(ord.status).code == ordStatus.Del.code)))){ m(); }

IF (( I .  I    ==  I  .   I     ( ( I  .  I  ( I . I    ). I   ==     I    . I . I  )))){ E(); } // lexing
IF ((I.I == I.I((I.I(I.I).I == I.I.I)))){ E(); } // remove spaces
IF ((E.I == E.I((E.I(E.I).I == E.I.I)))){ E(); } // get names from scope
IF ((E.I == E.I((E.I(E).I == E.I.I)))){ E(); } // member access
IF ((E.I == E.I((E(E).I == E.I.I)))){ E(); } // member access
IF ((E.I == E.I((E.I == E.I.I)))){ E(); } // function invoke
IF ((E.I == E.I((E == E.I.I)))){ E(); } // member access
IF ((E.I == E.I((E == E.I)))){ E(); } // member access
IF ((E.I == E.I((E == E)))){ E(); } // member access
IF ((E == E.I((E == E)))){ E(); } // member access
IF ((E == E((E == E)))){ E(); } // member access
IF ((E == E((E)))){ E(); } // equality check
IF ((E == E(E))){ E(); } // parentheses
IF ((E == E)){ E(); } // function invoke
IF ((E)){ E(); } // equality test
IF (E){ E(); } // parentheses
IF (E){ E; } // function invoke
IF (E){ S } // expression eval statement
IF (E) S // block statement
S // if statement

如您在此處看到的,每次使用成員訪問操作( . )時,都會正確地將其應用於左側的表達式,並將其正確地應用於右側的標識符。 它沒有被應用到if語句,並且if語句被正確地解析為整個語句。 雖沒添加額外的圓括號使你的回答是有意義的,結果還是一樣的,這種可能性只會拿出如果有右側太多括號內。

暫無
暫無

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

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