【问题标题】:Use of apostrophe vs single quote/backtick撇号与单引号/反引号的使用
【发布时间】:2017-03-12 21:07:14
【问题描述】:

我是 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 和/或参数中的双引号时,我几乎总是只使用单引号,所以这让我感到惊讶,并且没有立即显现出来。这种行为是否有原因记录在某处?我应该养成在单引号上使用反引号的习惯吗?我想避免其他类似的惊喜。

【问题讨论】:

  • 反引号是 ES6/2015 的模板文字 - 他们很高兴知道但不是必需的 developer.mozilla.org/en/docs/Web/JavaScript/Reference/… - 我想补充一下,尽管它们可以使代码更具可读性
  • 您肯定也几乎总是完全不在字符串中使用${…} 模式吗?
  • 一个非常相似/相关的问题here
  • 你把反引号叫做撇号吗?
  • "你把反引号叫做撇号吗?"

标签: javascript angularjs syntax


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-06
      • 2013-07-21
      • 2013-03-04
      相关资源
      最近更新 更多