首页 > 解决方案 > JavaScript:打印一些额外的字符

问题描述

我创建了一个生成器函数。

function* ask() {
    const name = yield "What is your Name.?";
    const sport = yield "What is your favorite sports.?";
    return `${name}'s favorite sport is ${sport}`;
}

const it = ask();
console.log(it.next());
console.log(it.next("Ng Sharma"));
console.log(it.next("Cricket"));

输出

当此代码在 Node.js 中运行时。

{ value: 'What is your Name.?', done: false }
{ value: 'What is your favorite sports.?', done: false }
{ value: 'Ng Sharma\'s favorite sport is Cricket', done: true }

当此代码在 Google chorme 中运行时。

{value: "What is your Name.?", done: false}
{value: "What is your favorite sports.?", done: false}
{value: "Ng Sharma's favorite sport is Cricket", done: true}

为什么我有这些额外的“\”斜线,我该如何摆脱它们?

标签: javascriptnode.jsgoogle-chrome

解决方案


为什么我有这些额外的“\”斜线,我该如何摆脱它们?

由于您要输出完整的结果对象,因此您将获得 Node 的默认对象表示,它在字符串周围使用单引号。由于它在字符串周围使用单引号,因此字符串中的单引号(撇号)反斜杠转义以指示它们不是字符串的结尾(就像您在单引号中编写字符串时所做的那样)。反斜杠实际上不在字符串中。Chrome 在字符串值周围使用双引号,而不是单引号,因此无需转义'.

如果您只是输出value,它将打印字符串内容,而不是从生成器中打印出完整的结果对象:

function* ask() {
    const name = yield "What is your Name.?";
    const sport = yield "What is your favorite sports.?";
    return `${name}'s favorite sport is ${sport}`;
}

const it = ask();
console.log(it.next().value);
console.log(it.next("Ng Sharma").value);
console.log(it.next("Cricket").value);

输出:

你叫什么名字。?
你最喜欢的运动是什么。?
Ng Sharma 最喜欢的运动是板球

推荐阅读