Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
es6 javascript推荐使用三元运算符应用模板文字的方法?_Javascript_Ecmascript 6_Ternary Operator_Template Literals - Fatal编程技术网

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

es6 javascript推荐使用三元运算符应用模板文字的方法?,javascript,ecmascript-6,ternary-operator,template-literals,Javascript,Ecmascript 6,Ternary Operator,Template Literals,我正在开发airbnb style guide时使用eslint。我发现eslint错误,建议使用模板文本而不是字符串连接(首选模板) 它用错误标记此行 ':'+softTab+err.stack.replace(/\n/g,'+softTab)+'' 这是我的密码 const renderError = err => { const softTab = '    '; const errTrace = process

我正在开发airbnb style guide时使用eslint。我发现eslint错误,建议使用模板文本而不是字符串连接(首选模板)

它用错误标记此行

':

'+softTab+err.stack.replace(/\n/g,
'+softTab)+''

这是我的密码

const renderError = err => {
  const softTab = '    ';
  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}`, {});
};
const renderError=err=>{
const softTab=' ; ; ; ; ;';
const errTrace=process.env.NODE_env!=“生产”?
“:

”+softTab+err.stack.replace(/\n/g,“
”+softTab)+'':”; 返回renderFullPage(`Server Error${errTrace}`,{}); };

我的问题是,使用三元运算符应用模板文字的推荐方法是什么?我在函数return上应用了它,但根据我在这一行上应用模板文字的位置,会导致错误。理想情况下,我尝试了整行操作,但在尝试将
${softTab}
传递到
err.stack.replace(/\n/g,“
”+softTab)
时遇到了一个问题。任何建议或解决方案都会很好。谢谢

这与三元运算符没有多大关系。您应该将字符串凹面替换为(或者至少,样式指南中说您应该这样做):

`:

${softTab}${err.stack.replace(/\n/g,`
${softTab})}

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

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, {});
}
函数呈现错误(err){
const softTab=' ; ; ; ; ;';
让消息='服务器错误';
if(process.env.NODE_env!=“生产”){
消息+=':

; message+=softTab+err.stack.replace(/\n/g,“
”+softTab); 消息+=''; } 返回renderFullPage(消息,{}); }
或者,使用CSS而不是

标记和“软”选项卡:

函数呈现错误(err){
让消息='服务器错误';
if(process.env.NODE_env!=“生产”)
消息+=`:${err.stack}`;
返回renderFullPage(消息,{});
}

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

`:

${softTab}${err.stack.replace(/\n/g,`
${softTab})}

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

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, {});
}
函数呈现错误(err){
const softTab=' ; ; ; ; ;';
让消息='服务器错误';
if(process.env.NODE_env!=“生产”){
消息+=':

; message+=softTab+err.stack.replace(/\n/g,“
”+softTab); 消息+=''; } 返回renderFullPage(消息,{}); }
或者,使用CSS而不是

标记和“软”选项卡:

函数呈现错误(err){
让消息='服务器错误';
if(process.env.NODE_env!=“生产”)
消息+=`:${err.stack}`;
返回renderFullPage(消息,{});
}

在ES6中,可以使用模板文本而不是字符串连接。要做到这一点,请使用反勾(`)(严重重音)字符,而不是双引号或单引号。模板文本可以包含占位符。它们由美元符号和大括号(${expression})表示。所以你的情况是:

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

${softTab}${err.stack.replace(/\n/g,`
${softTab})}`
有关这方面的进一步阅读:

在ES6中,可以使用模板文本而不是字符串连接。要做到这一点,请使用反勾(`)(严重重音)字符,而不是双引号或单引号。模板文本可以包含占位符。它们由美元符号和大括号(${expression})表示。所以你的情况是:

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

${softTab}${err.stack.replace(/\n/g,`
${softTab})}`
有关这方面的进一步阅读:

这是我提出的一个解决方案,用于安装AirBarb style guide

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}`, {});
};
const renderError=err=>{
const softTab=' ; ; ; ; ;';
const errTrace=process.env.NODE_env!=“生产”?
`:

${softTab}${err.stack.replace(/\n/g,`
${softTab}')}`:''; 返回renderFullPage(`Server Error${errTrace}`,{}); };
以下是我为套件AirBarb style guide提出的解决方案

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}`, {});
};
const renderError=err=>{
const softTab=' ; ; ; ; ;';
const errTrace=process.env.NODE_env!=“生产”?
`:

${softTab}${err.stack.replace(/\n/g,`
${softTab}')}`:''; 返回renderFullPage(`Server Error${errTrace}`,{}); };
我想知道,既然你已经有了
,为什么还需要

?好主意!不知道为什么,我猜是因为换行?完全拆下
开关?是的。我甚至会避免使用“softTab”,只给
元素一个
左填充:4ex:-)我想知道,既然你已经有了
,为什么还需要

?好主意!不知道为什么,我猜是因为换行?完全拆下
开关?是的。我甚至会避免使用“softTab”,只给
元素一个
左填充:4ex
:-)这会引发有关间距的错误…能够应用

${softTab}${err.stack.replace(/\n/g,

${softTab}
)}
您的意思是eslint配置不喜欢填充替换表达式的空格吗?好的,选择一个更好的。这会引发关于间距的错误…能够应用


${softTab}${err.stack.replace(/\n/g,

${softTab}
)}
你是说eslint配置不喜欢填充替换表达式的空格吗?好吧,选择一个更好的。