[英]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
表達式的末尾出現在主體之前。
由於您的問題似乎是關於對其應用了該.code
的if
語句的,因此讓我們僅使用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.