为了了解“文字模板”,我对这个名字很好奇,并遇到了以下概念:
- “文字表达”
- “字符串文字”
- “字面陈述”
我还发现在数学和代数领域有同名的概念。
关键是在查阅了各种定义和找例子之后,我并不能清楚地理解什么是字面量,相反我有更多的困惑,所以我想打消我的疑虑
- 究竟什么是字面?
- 您如何定义和使用文字?
- 什么是函数字面量?
为了了解“文字模板”,我对这个名字很好奇,并遇到了以下概念:
我还发现在数学和代数领域有同名的概念。
关键是在查阅了各种定义和找例子之后,我并不能清楚地理解什么是字面量,相反我有更多的困惑,所以我想打消我的疑虑
对@Rubén 已经回答的内容做出更多贡献,我将尝试解释一些作者所说的内容
function literal
以及您在问题中已翻译(或复制)为función literal
. 此外,我将尝试澄清template literal
您在问题中翻译(或复制)的 a 的目的plantilla literal
。Template Literal(模板字符串)- 文本字符串模板
我将首先关注
template literal
.根据 MDN 文档,字符串模板是接受嵌入表达式的文本字符串(文字)。无需过多详细介绍 JavaScript 如何处理文本模板,内部发生的事情是模板通过一个计算嵌入表达式的函数传递,并连接整个模板,从而生成一个文本字符串 (
string
)。我们已经在@Rubén 的回答中看到以下是字符串类型的文字:
任何一个
另一方面,模板以反引号或(与StackOverflow MarkDown 中
back-tick
用于指示的相同)开始和结束。código
例如:我们可以对文本模板(不适用于字符串文字)做的就是在其中嵌入一个表达式。例如:
这将显示:
请注意,大括号 (
${ }
) 之间使用的表达式是 JavaScript 代码。我们可以将模板字符串分配给变量,就像我们已经提到的文字表达式一样,例如:
因此,字符串模板是一种使用嵌入表达式创建字符串的方法。非常有用的东西,当我们需要使用某种方式
plantilla
来显示消息或信息而不重复代码时,并且以稍微更直观的方式。例如:他们的目的是在更复杂的表达式中使用它,其中换行符被认为是这样的。
最广泛的用途之一是在前端框架中。例如,Angular
template
在组件内调用的变量中使用字符串模板。这种生成视图代码并将其放入组件内的变量中的方式称为inline template
.文字功能(根据一些作者的说法)
我遇到过一些文本,其中作者使用了
function literals
.但是,此定义不是ECMA 标准的一部分。
由于某种原因,所有使用该表达式的作者的含义都是
function literal
相同的:回想一下,在 JavaScript 中,函数声明是按如下方式完成的(未显示所有文档详细信息):
我们注意到该函数有一个标识符 (
Binding Identifier
),这将允许我们在代码的其他部分中使用或执行该函数。如果我想使用或调用该函数,我只需通过其标识符名称后跟括号(在本例中为:)调用它
miFuncion()
,传递必要的参数(或不传递),它将被执行。声明函数而不给它们命名是没有意义的,如果我们这样做了,我们会得到一个语法错误:
但是,有一种方法可以将函数分配给变量(在英语中,该术语称为
name binding
)。有了这个,我们说函数的代码(在这种情况下)与内存标识符(变量)相关联。如果我们分配给变量的函数声明包含一个名称,那么它将是一个仅在变量中可见的标识符。这意味着函数名在全局范围或变量所属的范围内将不可用。
例如:
现在让我们看看如果我们将一个没有标识符名称的函数的声明代码分配给一个变量会发生什么。正是这种类型的声明被分配给了一些作者所称的变量
function literal
。随着异步进程和所谓函数的兴起,以及
callback
语言中箭头函数的引入,该术语function literal
逐渐被废弃,作者开始使用“anonymous function
翻译”这个术语(这也不是标准的一部分) asfunción anónima
是函数声明的更合适的术语,无需为其分配标识符或名称。所有这一切的重要之处在于,与已经提到的数据类型的文字不同:
文档中没有
Literal de función
. 正是一些作者这样称呼的,它并不是真正的字面表达,就像我们所看到的那样,它是语言的一部分。我希望这能进一步澄清你的问题。
文字。
文字是概念的表示:例如数字。想象一下第三个。您确切地知道“三”这个概念的含义,您可以用几种方式来表示它:
“三”这个概念无论你如何表示,任何语言,任何编程语言,任何数基,宇宙中的任何点,以及任何时间,都将是相同的。
文字是它的表示形式,如以下代码所示:
我们有三个文字,第一个
0
代表概念zero。以下3
和3
代表概念三,两个字面量可以互换且彼此无法区分,因为它们代表相同的事物,您不能说一个三与另一个三个不同,因为它们都是相同的概念:两者都是概念的字面三并且在您的代码或其他人的代码的任何部分都将保持完全相同:我们可以从字面上说任何三个都是完全相同的三个。数字字面量是最容易理解的,这就是为什么我选择它来说明“字面量”的概念,但“字面量”的相同概念也适用于其他事物:
[1, 2, 3, 4]
."En un lugar de La Mancha"
.false
.function() {}
.这些文字中的任何一个都从字面上表达了一个独特的概念,因此列表文字
[1,2,3,4]
与前一个文字完全相同(尽管写法不同),因为它们代表完全相同的概念,而文本文字"En un lugar de Ma Lancha"
不代表相同的概念或文字。上面的示例列表。多变的。
变量是包含可以变化的数据的内存空间(因此变量名称),它不是像文字那样的概念构造,而是用于在程序中处理和交换数据的编程语言机制。
持续的。
常量是包含程序运行时同意不修改的数据的内存空间;也就是说,它不是只读的内存空间,但在概念上它是只读的。除非您的意思是物理常数:
或数学:
简而言之,在 JavaScript 中,字面量是值的表示,例如,
整型字面量
字符串字面量
对象类型字面量
“自定义”对象类型的文字(不包括在语言规范中)
你如何定义自己?它使用与每种文字类型相对应的语法简单地编写。
它是如何使用的?很多方面。通常在数组、对象、变量声明、常量声明和条件中使用它。
它与变量或常量有何不同?在 JavaScript 中,变量和常量是分配给存储值的内存位置的自定义名称。初学者的初始示例是指变量和常量的声明,例如,将 value
naranja
(一个字面量)赋给变量 namefruta
,声明如下:什么是字面函数?它不是 Mozilla 开发者网络上的规范或文档的一部分,因此它取决于您正在查看的内容的作者,尽管它可能是“对象文字函数_”或“模板文字函数_”的错误转录/翻译其中 _ 是缺失的单词或短语。整个段落都必须修改,我建议你在一个新问题中这样做。
有关全面的解释,请参阅语法和类型 > 基本概念和语法和类型 > 文字