Javascript 将某物解析为对象文字而不是块有什么区别?

Javascript 将某物解析为对象文字而不是块有什么区别?,javascript,Javascript,对不起,我对JavaScript的基本概念一无所知 归结起来就是: 文字-直接在脚本中找到的值。示例: 表达式-组合的一组标记,通常为文字或标识符 使用可计算为特定值的运算符。示例: 在Javascript中,上述两种语言有着非常明显的区别 我碰巧读到了这个。我很熟悉函数声明和函数表达式之间的区别,以及何时使用一种方法而不是另一种方法 同一条: …您可能还记得,在使用eval评估JSON时,字符串 通常用括号-eval(“(“+json+”)”包装)。这是 当然,这样做的原因是相同的——分组运算

对不起,我对JavaScript的基本概念一无所知

归结起来就是:

文字-直接在脚本中找到的值。示例:

表达式-组合的一组标记,通常为文字或标识符 使用可计算为特定值的运算符。示例:

在Javascript中,上述两种语言有着非常明显的区别

我碰巧读到了这个。我很熟悉函数声明和函数表达式之间的区别,以及何时使用一种方法而不是另一种方法

同一条:

…您可能还记得,在使用eval评估JSON时,字符串 通常用括号-eval(“(“+json+”)”包装)。这是 当然,这样做的原因是相同的——分组运算符 括号是,强制将JSON括号解析为表达式 而不是作为一个块:

那么,将某个对象解析为
对象文本
与将其解析为
有什么区别呢


<> p> >在代码< >解析> <代码> >

第一,不要<代码> EVA/COS> JSON,在字符串源

上使用<代码> jSON.PARSE <代码> >
块是一个“表达式组”,例如

let x = 0;
if (true) {
    // this is a block
    ++x;
}
然而,这同样也是一个障碍

let x = 0;
{ // hi there, I'm a block!
    ++x;
}
这意味着,当解释器看到块表示法时,即使您这样做,它也会假定一个块

{ // this is treated as a block
    foo: ++x
}
在这里,
foo
充当一个标签而不是属性名,如果您尝试使用尝试的对象文本执行更复杂的操作,您将得到一个语法错误

当您想要像这样含糊不清地编写对象文本时,解决方案是通过提供括号显式地强制解释器进入“表达式模式”

({ // this is definately an Object literal
    foo: ++x
})

首先,不要
eval
JSON,对字符串源代码使用
JSON.parse


块是一个“表达式组”,例如

let x = 0;
if (true) {
    // this is a block
    ++x;
}
然而,这同样也是一个障碍

let x = 0;
{ // hi there, I'm a block!
    ++x;
}
这意味着,当解释器看到块表示法时,即使您这样做,它也会假定一个块

{ // this is treated as a block
    foo: ++x
}
在这里,
foo
充当一个标签而不是属性名,如果您尝试使用尝试的对象文本执行更复杂的操作,您将得到一个语法错误

当您想要像这样含糊不清地编写对象文本时,解决方案是通过提供括号显式地强制解释器进入“表达式模式”

({ // this is definately an Object literal
    foo: ++x
})

{
开头并以
}
结尾的组视为对象文字或块,具体取决于上下文*

在表达式上下文中,组被解释为对象文本。在表达式上下文中写入块将生成语法错误:

// Valid code:
foo = {a:b};
({a:b});

// Syntax errors:
foo = {var a = b};
({var a = b});
在表达式上下文之外,该组被解释为块。根据代码的具体编写方式,在表达式上下文之外编写的对象文字要么是语法错误,要么将被解释为标签


*注意:在ECMAscript规范中,“上下文”一词用于表示特定的内容。我在这里使用的这个词在计算机科学中具有解析的一般含义。

一个以
{
开头并以
}
结尾的组被视为对象文字或块,具体取决于上下文*

在表达式上下文中,组被解释为对象文本。在表达式上下文中写入块将生成语法错误:

// Valid code:
foo = {a:b};
({a:b});

// Syntax errors:
foo = {var a = b};
({var a = b});
在表达式上下文之外,该组被解释为块。根据代码的具体编写方式,在表达式上下文之外编写的对象文字要么是语法错误,要么将被解释为标签


*注意:在ECMAscript规范中,“上下文”一词用于表示特定的内容。我在这里使用的这个词在计算机科学中具有解析的一般意义。

块是一种语句,既不是表达式,也不是字面意义。您还需要查找:-)块是一种语句,既不是表达式也不是文字。你也要查一下:-)对不起我的无知。这里的标签是什么意思?[将被解释为标签]?标签是一种类似于标识符的东西,可用于
break
continue
语句中etc@ShirgillFarhanAnsari: . 如果阅读文档,您会注意到标签的语法与object literal中的对象键类似。因此,包含标签的块可能看起来像简单的对象文字。@ShirgillFarhanAnsari:FWIW,标签是从汇编语言继承的语言功能抱歉,我不知道。这里的标签是什么意思?[将被解释为标签]?标签是一种类似于标识符的东西,可用于
break
continue
语句中etc@ShirgillFarhanAnsari: . 如果阅读文档,您会注意到标签的语法与object literal中的对象键类似。因此,包含标签的块可能看起来像简单的对象文字。@ShirgillFarhanAnsari:FWIW,标签是从汇编语言继承的语言功能