` `和' '之间有什么区别?

3

大家好,我想知道这两种单引号 ` 和 ' 有什么区别。

我尝试使用 ` 执行下面的命令,然后它就可以正常工作了。

axios.get(`https://api.github.com/users/${this.state.userName}`)
      .then(resp => {
        console.log(resp);
      });

但是当我尝试使用''运行相同的命令时,它无法工作。

axios.get('https://api.github.com/users/${this.state.userName}')
          .then(resp => {
            console.log(resp);
          });

4
请阅读:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Template_literals - Vivek Doshi
一般来说,如果你遵循一种语言的规定语法,并且它能够正常工作,为什么要改变语法,然后抱怨什么都不起作用呢? - Peter Abolins
1
这个问题肯定有无数个重复的。 - jfriend00
4个回答

5
第一个是在ES6中添加的模板字面量,它首先评估给定的嵌入式表达式,获取结果并用结果替换表达式。在${}中,您可以放置表达式(变量、函数调用等),它将创建一个字符串,并用结果替换${expression}部分。
这段代码部分:

var str = 'text';
var template = `Some ${str}`; // `str` is a expression which returns the value

console.log(template);

等同于将字符串连接起来。

var str = 'text';
var template = 'Some ' + str; // Just concatenate the strings

console.log(template);

模板文字还允许您创建多行字符串。

const multiLine = `This is a multi-
line text`;

console.log(multiLine);


3

反引号(`)用于在JavaScript中定义模板字面量字符串,自ES6以来就使用它们。 这些用于使用内联变量以及声明多行字符串,在没有连接(+)的情况下以前无法实现。

例如:

var name = 'John';
var string1 = 'My name is ' + name;   //ES5
var string2 = `My name is ${name}`;   //ES6

也可以用来声明多行字符串:

var longString = `this is a
                  really
                  long
                  multiline
                  string`;

编辑 关于我的多行示例,模板文字保留空格。因此,该示例不会按您认为的方式存储。这个链接http://2ality.com/2016/05/template-literal-whitespace.html在这方面很有用。


1
第一个 `` 是模板字面量或反引号,其中第二个 '' 是单引号。
模板字面量可用于多行,并可使用“插值”来插入变量内容,使用 $ 符号。
使用单引号 '' 将需要字符串连接。
在您的情况下,它被用作插值。

console.log(`Hello I am 


template literal `)

console.log("Hello I am" +

  " quotes")


-1

单引号对于字面量有效,但对于其他类型的引号,您可能会得到您所输入的文字,而不是期望的结果。因此,使用其他类型的引号可以让您开发自定义表达式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接