Javascript 如何获取console.log所示的变量的字符串表示形式

Javascript 如何获取console.log所示的变量的字符串表示形式,javascript,node.js,string,Javascript,Node.js,String,当变量通过console.log()输出时,如何获取该变量的字符串表示形式 e、 g 我主要感兴趣的是在Node.js中运行它(但也很好奇在浏览器中运行时是否可能)。Node.js控制台实现使用util.inspect将对象输出字符串化: console.assert(util.inspect(ret) === "Promise { 'my string' }"); 将承诺断言为promise{'mystring'}是不安全的,因为这样表示承诺是不必要的。在REPL中,它将是: Promise

当变量通过
console.log()
输出时,如何获取该变量的字符串表示形式

e、 g


我主要感兴趣的是在Node.js中运行它(但也很好奇在浏览器中运行时是否可能)。

Node.js控制台实现使用
util.inspect
将对象输出字符串化:

console.assert(util.inspect(ret) === "Promise { 'my string' }");
将承诺断言为
promise{'mystring'}
是不安全的,因为这样表示承诺是不必要的。在REPL中,它将是:

Promise {
  'my string',
  domain:
   Domain {
     domain: null,
     _events: { error: [Function: debugDomainError] },
     _eventsCount: 1,
     _maxListeners: undefined,
     members: [] } }

即使浏览器中存在
util
polyfill,它也不能用于同步串接承诺,因为无法检查本机承诺,只能与
then
catch
链接。Node.js检查ES6承诺。

这是一种针对您的问题的黑客攻击,它将适用于浏览器和节点

function assertPromise(promiseVal, stringVal) {
                promiseVal()
                        .then(str => {
                                let stringRepresentation = `Promise { '${str}' }`;
                                console.assert(stringRepresentation === stringVal);

                        });
}

const myFunc = async () => 'my string';

ret = myFunc();
console.log(ret);  // Promise { 'my string' }

assertPromise(myFunc, "Promise { 'my string' }");       // Assert to TRUE

严格来说,控制台不输出字符串表示。对于许多对象,它输出交互式对象检查器
Promise{'mystring'}
很可能是这些特别检查员之一。因此,您的问题的答案主要是no.ret=myFunc()。然后(val=>console.log(val))谢谢@deceze。我最感兴趣的是在Node.js中运行它——这是否使获得字符串表示变得更可能?赞成者指出承诺不支持同步内省
function assertPromise(promiseVal, stringVal) {
                promiseVal()
                        .then(str => {
                                let stringRepresentation = `Promise { '${str}' }`;
                                console.assert(stringRepresentation === stringVal);

                        });
}

const myFunc = async () => 'my string';

ret = myFunc();
console.log(ret);  // Promise { 'my string' }

assertPromise(myFunc, "Promise { 'my string' }");       // Assert to TRUE