Javascript “是什么意思?”;字面上的;在短语对象文字符号中?

Javascript “是什么意思?”;字面上的;在短语对象文字符号中?,javascript,json,Javascript,Json,在Javascript中:Douglas Crockford写到Javascript的一个好主意是“表达对象文字符号”。我知道他基本上是在恭维 但是这个符号的“字面”是什么呢?还有其他语言使用“表达对象文字符号”吗?他到底是什么意思?关于“赞美JSON”:他具体说明了这一点 “文字”部分:谷歌搜索“对象文字”提供了两个顶级资源:和。引用后者: 在计算机科学中,文字是一种表示源代码中固定值的符号。几乎所有编程语言都有原子值的符号,如整数、浮点数和字符串,通常还有布尔值和字符;有些还具有枚举类型元素

在Javascript中:Douglas Crockford写到Javascript的一个好主意是“表达对象文字符号”。我知道他基本上是在恭维

但是这个符号的“字面”是什么呢?还有其他语言使用“表达对象文字符号”吗?他到底是什么意思?

关于“赞美JSON”:他具体说明了这一点

“文字”部分:谷歌搜索“对象文字”提供了两个顶级资源:和。引用后者:

在计算机科学中,文字是一种表示源代码中固定值的符号。几乎所有编程语言都有原子值的符号,如整数、浮点数和字符串,通常还有布尔值和字符;有些还具有枚举类型元素和复合值(如数组、记录和对象)的符号


基本上,所有使用导致定义类型的语法构造都可以称为文本。(例如,一个字符串文本,
“abc”
)这是一个技术术语,表示“字面上”以这种或那种方式写入某个特定类型的变量(与构造相反,它看起来像其他东西,如PHP中的
array()
).

对象文字是用大括号括起来的以逗号分隔的名称-值对列表。在JavaScript中,对象文字定义如下:

var someObject = {
    some_prop: 'some string value',
    another_prop: 'another string value',
    int_prop: 100
};
它是“扁平的”。创建它,向其中添加属性和方法,所有这些属性和方法都是公共的。 对象文字使用以下语法规则形成:

  • 冒号分隔属性名和值
  • 逗号将每个名称/值对与下一个名称/值对分开
  • 姓氏/值对后不能有逗号,但在这种情况下,版本9之前的Internet Explorer通常会触发错误:“预期的标识符、字符串或数字”
值可以是任何数据类型,包括数组文字、函数和嵌套对象文字


尽管JavaScript对象文字和JavaScript实例对象都是对象,但它们的固有性质和功能有所不同。

在编程中,文字通常是固定值。 比如说
var五=5
因此,在OOP语言中,对象文字类似于:

var new_dog = {
    name: "doggy",
    good_dog: false
};

整件事都是我的目标。我的{}之间的东西是我的文字。我的符号是一个模式“name:value”

作为一个刚接触编程的人,我真的很难理解文字的概念。解释通常假设您已经了解所有类型和构造函数。这是我对它的(过度)简化理解:

“类型”是指变量的分类(不同类型的变量可以做不同的事情)。​谈论基元类型文字是很常见的​ 例如字符串、数字和布尔值。下面是一个字符串文字示例:

let myStr = 'word'; 
在本例中,
word
是字符串文字;您已经创建了字符串类型的东西

在JS中,也可以有对象文本。也就是说,你可以在花括号中键入这个东西,它会自动成为对象类型

let mylitteralObject = {};
我们在不使用运算符的情况下创建了一个对象(运算符本质上是一个使用熟悉语法的内置函数,如“+”)。JS引擎查看花括号并确定您正在声明一个对象

一种非文字的方法是使用一个对象构造函数——一个与
new
关键字组合的函数来创建一个新对象。​

let myConstructedObject =  new Object();

在这里,新的关键字被视为一个新的关键字。因此,myConstructedObject中的数据是表达式计算的结果。

我自己也一直在努力解决这个问题。虽然我发现上面的答案很有帮助,但我发现
literal
的一个简单定义如下:

在程序设计中,一种完全按照它的意思来解释的值。相反,变量是一个名称,可以在程序执行期间表示不同的值。常量是表示整个程序中相同值的名称。但文字不是名称,而是值本身

文字可以是数字、字符或字符串。例如在表达式中

x=3

x是一个变量,3是一个文本

真正吸引我的是

但文字不是名称,而是值本身。

此外,这也很有帮助。我赞赏这一评论:

基本上是表示程序中某个值的代码,而不是对程序执行有特殊意义的代码。例如:15在程序vs+中的字面意思是15,它具有“将两个东西加在一起”的特殊含义。您不会将+视为表示加号本身,因为它不是文字

这个答案很有帮助:

快速示例:

int my_int_var=723

723-这组字符指的是文字整数值

my_int_var-这组字符表示一个可变整数值


文字
{}
与非文字
新对象()相反。我想,“literal”在这里是一个名词,就像所有语言中的“number literals”一样。例如,在静态类型语言中,string变量是一个可以保存字符串的变量。字符串文字填充字符串变量。在javascript中,对象可以表示为文字——就像我的示例中的字符串文字一样。这就是我的想法吗?我喜欢这个答案。非常干净,专注于问题。请投我的赞成票。@akh2103基本上是的。听起来不错。您不需要实例化任何类来获取类型为
foo
,但可以直接键入,就像字符串和布尔值一样。在Python中,