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

JWi*_*ley 5 javascript syntax angularjs

我是Angular的新手,在继续编写教程时,我在编写模块时略微改变了习惯:

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

这在项目的其余部分完全编译,没有错误.但是,当调用此函数时,它将内容读取get为整个字符串,而不是按原样解析内容.

调用它的正确方法显然是:

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

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

作为一名程序员,我几乎总是在参数中使用javascript和/或双引号时专门使用单引号,所以这让我感到惊讶,并不是立即显而易见的.有没有理由在某处记录这种行为?我应该养成使用反引号而非单引号的习惯吗?我想避免其他这样的惊喜.

Pet*_*ehr 7

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

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


Rem*_*emi 5

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

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

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