doSomething().then(function () {
return doSomethingElse();
});
doSomething().then(function () {
doSomethingElse();
});
doSomething().then(doSomethingElse());
doSomething().then(doSomethingElse);
是在一个网站上看到的,请问这几段js代码有什么区别
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
上面 前者return 后面表示的是函数的返回值是doSomethingElse(),而后者没有指定 return默认返回值是undefined
下面,无论doSomethingElse()还是doSomethingElse都表示函数的一个参数。
简化版例子
第 1 个和第 4 个一样。
第 2 个没有
return,函数默认返回undefined。第 3 个,promise 的
then里面应该传入函数,而不是函数的返回值。首先假定这些都是与 Promise 相关的,即 then 里的参数是一个回调函数。
如果不考虑运行时上下文,1 和 4 一样,都可以支持继续链式调用,但如果考虑运行时上下文,this 和 arguments 等在 1 中会丢失,4 则不会。
2 因为没有 return 返回,所以无法继续进行链式调用。
3 中要求 doSomethingElse() 返回一个函数用于 then 回调。