Javascript 为什么在我console.log我的承诺时返回整数值

Javascript 为什么在我console.log我的承诺时返回整数值,javascript,promise,Javascript,Promise,我想知道为什么在我console.log我的承诺时返回整数值 var promise=新承诺(函数(解析、拒绝){ setTimeout(函数(){ 解决(“你好,世界”); }, 2000); }); promise.then(函数(数据){ 控制台日志(数据); }); setTimeout(()=>console.log(“之后:”,promise),3000); 输出: 但是,如果在承诺解析后删除console.log,则不会返回任何整数为什么发生这种情况?解释这里发生的事情的一种方

我想知道为什么在我console.log我的承诺时返回整数值

var promise=新承诺(函数(解析、拒绝){
setTimeout(函数(){
解决(“你好,世界”);
}, 2000);
});
promise.then(函数(数据){
控制台日志(数据);
});
setTimeout(()=>console.log(“之后:”,promise),3000);
输出:


但是,如果在承诺解析后删除console.log,则不会返回任何整数为什么发生这种情况?

解释这里发生的事情的一种方法是使用堆栈片段,其中包括控制台的自定义实现。下面是代码片段中的原始代码。有空时单击“运行代码片段”:

var promise=新承诺(函数(解析、拒绝){
setTimeout(函数(){
解决(“你好,世界”);
}, 2000);
});
promise.then(函数(数据){
控制台日志(数据);
});

setTimeout(()=>console.log(“之后:”,promise),3000)因为。当您在控制台中运行命令时,它们的返回值是loggedI。在这里,终端上不会得到数字输出,也不会期望得到@HereticMonkey
setTimeout
未直接在终端上运行,赋值为
undefined
。“我误解了什么?”马克:它正在运行。如果您只查看图像,您会丢失分号后的省略号,它会删除OP代码块中的其余代码,该代码块也粘贴到控制台中。明白了–这是最后一次
setTimeout
谢谢@HereticMonkey。