javascript - 以下js代码有什么不同,求解
高洛峰
高洛峰 2017-04-11 12:25:44
[JavaScript讨论组]
doSomething().then(function () {
  return doSomethingElse();
});

doSomething().then(function () {
  doSomethingElse();
});

doSomething().then(doSomethingElse());

doSomething().then(doSomethingElse);

是在一个网站上看到的,请问这几段js代码有什么区别

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(3)
怪我咯

上面 前者return 后面表示的是函数的返回值是doSomethingElse(),而后者没有指定 return默认返回值是undefined

下面,无论doSomethingElse()还是doSomethingElse都表示函数的一个参数。
简化版例子

function a(){
    console.log('a')
    return 'a inner';
}

function b(){
    a()
}

function c(){
    return a()
}
function e(fn){
    console.log(fn)
}

b()//a
c()//a  "a inner"
e(a) 
// function a(){
//    console.log('a')
//    return 'a inner';
//}

e(a()) // a   a inner

PHP中文网

第 1 个和第 4 个一样。

第 2 个没有 return,函数默认返回 undefined

第 3 个,promise 的 then 里面应该传入函数,而不是函数的返回值。

PHP中文网

首先假定这些都是与 Promise 相关的,即 then 里的参数是一个回调函数。

如果不考虑运行时上下文,1 和 4 一样,都可以支持继续链式调用,但如果考虑运行时上下文,this 和 arguments 等在 1 中会丢失,4 则不会。
2 因为没有 return 返回,所以无法继续进行链式调用。
3 中要求 doSomethingElse() 返回一个函数用于 then 回调。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号