使用撇号(apostrophe)与单引号/反引号的区别

9

我刚接触 Angular,在跟随教程时,写模块状态时由于习惯性修改导致出现了小问题:

.state('sports.medals', {
    url: '/:sportName',
    templateUrl: 'sports/sports-medals.html',
    resolve: {
      sportService: function($http, $stateParams){
        return $http.get('/sports/${ $stateParams.sportName }');
      }
    },

这段代码在整个项目中编译完全没有问题,也没有错误。但是,在调用该函数时,它会将get内容作为一个整体字符串读取,而不是按照正常方式解析其内容。

正确的调用方式似乎是:

 .state('sports.medals', {
        url: '/:sportName',
        templateUrl: 'sports/sports-medals.html',
        resolve: {
          sportService: function($http, $stateParams){
            return $http.get(`/sports/${ $stateParams.sportName }`);
          }
        },

使用撇号/反引号`而不是单引号'

作为程序员,我在处理javascript时几乎总是使用单引号,或者在参数中使用双引号,因此这让我感到惊讶,并且不是立即显而易见的。有没有某处记录这种行为的原因?我应该养成使用反引号而不是单引号的习惯吗?我希望避免其他类似的意外。


2
反引号是ES6/2015中的模板文字 - 它们很好用,但不是必需品。我想补充一点,它们可以使代码更易读。 - StudioTime
你肯定也几乎总是不会在字符串中使用${…}模式吧? - Bergi
这里有一个非常相似/相关的问题链接 - RBT
你把反引号称作单引号了吗? - ericw31415
你把反引号称作单引号了吗?这两个是不同的符号。我刚刚用了10分钟在网上搜索来澄清,很多人都会混淆。 - user27068
2个回答

11

6

模板文字使用反引号 `(重音符号)字符而不是双引号或单引号来包含。

Javascript中的模板文字/字符串字面量使用反引号。它们是E6功能,只是连接的语法糖。模板文字在现代浏览器中得到广泛支持,并在nodejs中得到支持。如果不使用模板,则应使用双引号(")或单引号(')。

MDN有关于模板文字使用的文档,将提供更多信息:模板文字


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