使用撇号与单引号/反引号

时间:2017-03-12 21:07:14

标签: javascript angularjs syntax

我是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 个答案:

答案 0 :(得分:7)

反引号是字符串插值工作所必需的。这是一个名为模板插值的ES6功能:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals

有时它可供您使用,但在浏览器支持https://caniuse.com/#feat=template-literals方面仍远未普及。熟悉它并尽可能使用它!

答案 1 :(得分:4)

  

模板文字由反向勾号(重音符)字符括起来,而不是双引号或单引号。

javascript中的模板文字/字符串文字使用后面的勾号。它们是E6特征,只是concatenation的语法糖。模板文字在现代浏览器中为widely supported,在nodejs中受支持。不使用模板时,您应该使用双引号(")或单引号(')。

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