Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Javascript中使用(.code)的目的是什么?_Javascript - Fatal编程技术网

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

在Javascript中使用(.code)的目的是什么?,javascript,Javascript,我有一个Javascript代码,它运行带有reference.code的If语句。我到处寻找原因,但没有找到有用的答案。以下是一个例子: function X(Y) { if ((ord.status == JSON.stringify( (JSON.parse(ord.status).code == ordStatus.Del.code)){ //code here } } .code在这里不是“扩展名”。它是对Javascript对象的code属性的

我有一个Javascript代码,它运行带有reference.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的文档进行参考的情况。我们将使用假设方法
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
语句被正确地解析为整个语句。尽管我确实添加了额外的括号以使您的答案有意义,但结果仍然是一样的,因为只有在右侧有太多括号时才会出现这种可能性。

所谓“扩展名”,您是指像“.exe”或“.html”这样的“文件扩展名”吗在文件名的末尾?我建议阅读一些关于Javascript中对象的文档。我注意到一个问题:括号不匹配。应该有两个右括号来匹配左边的括号。你确定你发布了正确问题的答案吗?@Dummy根据对我先前答案(现已删除)的评论,OP似乎知道成员访问操作是什么。我对这个问题的下一个最好的解释是,他看到了一些奇怪的东西,关于它是如何被使用的。