当前位置: 首页 > 知识库问答 >
问题:

es6 javascript推荐用三元运算符应用模板文字的方法?

时仰岳
2023-03-14

我在开发airbnb风格指南时使用了eslint。我收到eslint错误建议使用模板文字而不是字符串连接(首选模板)。

它将此行标记为错误

<代码>':

这是我的密码

const renderError = err => {
  const softTab = '&#32;&#32;&#32;&#32;';
  const errTrace = process.env.NODE_ENV !== 'production' ?
    ':<br><br><pre style="color:red">' + softTab + err.stack.replace(/\n/g, '<br>' + softTab) + '</pre>' : '';
  return renderFullPage(`Server Error${errTrace}`, {});
};

我的问题是使用三元运算符应用模板文字的推荐方法是什么?我在函数返回中应用了它,但根据我在此行上应用模板文字的位置会导致错误。理想情况下,我尝试执行整行操作,但是尝试将 ${softTab} 传递给 err.stack.replace(/\n/g, '


共有3个答案

祝英博
2023-03-14

这是我想出的解决方案,以套件airbrb风格指南。

const renderError = err => {
  const softTab = '&#32;&#32;&#32;&#32;';
  const errTrace = process.env.NODE_ENV !== 'production' ?
    `:<br><br><pre style="color:red">${softTab}${err.stack.replace(/\n/g, `<br>${softTab}`)}</pre>` : '';
  return renderFullPage(`Server Error${errTrace}`, {});
};
卓星波
2023-03-14

这与三元运算符没有太大关系。您只需将字符串连接替换为模板文字(或者至少,样式指南中说您应该这样做):

`:<br><br><pre style="color:red">${ softTab }${ err.stack.replace(/\n/g, `<br>${softTab}`) }</pre>'

也就是说,你可能不想在这里使用三元:

function renderError(err) {
  const softTab = '&#32;&#32;&#32;&#32;';
  let message = 'Server Error';
  if (process.env.NODE_ENV !== 'production') {
    message += ':<br><br><pre style="color:red">';
    message += softTab + err.stack.replace(/\n/g, '<br>' + softTab);
    message += '</pre>';
  }
  return renderFullPage(message, {});
}

或者,使用CSS代替<code>

function renderError(err) {
  let message = 'Server Error';
  if (process.env.NODE_ENV !== 'production')
    message += `:<pre style="margin-top:2em;padding-left:3em;color:red;">${err.stack}</pre>`;
  return renderFullPage(message, {});
}
唐焕
2023-03-14

在 ES6 中,您可以使用模板文本而不是字符串串联。为此,请使用反引号 (')(重音符)字符而不是双引号或单引号。模板文本可以包含占位符。这些由美元符号和大括号 (${expression}) 表示。所以你的情况:

`:<br><br><pre style="color:red">${ softTab }${ err.stack.replace(/\n/g, `<br>${softTab}`) }</pre>`

进一步阅读:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals

 类似资料:
  • 问题内容: 如何使用AngularJS(在模板中)进行三元运算? 最好在html属性中使用一些属性(类和样式),而不是创建和调用控制器的函数。 问题答案: 更新 :Angular 1.1.5添加了一个三元运算符,因此现在我们可以简单地编写 如果使用的是较早版本的Angular,则有两个选择: 上面的项目2创建具有两个属性的对象。数组语法用于选择名称为true的属性或名称为false的属性,并返回关

  • 本文向大家介绍JS常用字符串方法(推荐),包括了JS常用字符串方法(推荐)的使用技巧和注意事项,需要的朋友参考一下 JS常用字符串方法(推荐) // 以下省略前半部分的 " str01. " (部分不是这个喔) charAt(num) // 得到指定索引位置的单字符 charCodeAt(num) // 得到指定索引位置字符的Unicode值 (ascii为其子集) concat(str01,st

  • 条件(三元)运算符是 JavaScript 仅有的使用三个操作数的运算符。一个条件后面会跟一个问号(?),如果条件为 truthy ,则问号后面的表达式A将会执行;表达式A后面跟着一个冒号(:),如果条件为 falsy ,则冒号后面的表达式B将会执行。本运算符经常作为 if 语句的简捷形式来使用。(MDN) 三元运算符,也称条件运算符、三目运算符。 三元运算符可以代替简单的 if 语句。 1. 语

  • 我对这个错误有意见 错误LNK2019未解析的外部符号"类std::basic_ostream 现在,< code>post所做的就是调用< code >操作符 宣言 定义 它们分别位于文件和中,我要求运算符不是成员函数(用于赋值)。

  • 问题内容: Netbeans说我的三元运算符不是语句。怎么会? 我尝试过if / then / else对应项,并且工作正常: 问题答案: 三元运算符中的语句必须是非空的。他们需要退货。