首页 > 试题广场 >

执行下列语句后,变量name的值为var name =...

[单选题]
执行下列语句后,变量name的值为
var name = '1';
new Promise(function (resolve, reject) {
resolve();
reject();
}).then(function () {
name = '2';
}).catch(function () {
name = '3';
});
name = '4';
  • 1
  • 2
  • 3
  • 4
new Promise是异步的,所以它会在最后执行。然后resolve和reject两种状态只会触发一种,先调用resolve方法,就不会调用reject方法,接着执行then后面的回调函数,所以最后name为2;看顺序效果的话可以在每个name后面打印一下即可,代码如下
        var name = '1';
        console.log(name);
        new Promise(function (resolve, reject) {
            resolve();
            reject();
        }).then(function () {
            name = '2';
            console.log(name);

        }).catch(function () {
            name = '3';
            console.log(name);

        });
        name = '4';
        console.log(name);

发表于 2020-01-07 15:31:53 回复(0)
先执行宏任务
var name = 1
resolve() // 我理解为return,所以reject不会执行 
然后 name = 4
然后是微任务
name = 2
所以最后name为2

发表于 2020-02-10 20:39:25 回复(0)
peomise微任务,promise只能由等待->已执行或者已拒绝。所以只会进入.then这个微任务。所以输出
发表于 2019-12-06 22:02:45 回复(0)