javascript有return和没return有什么区别

以下代码(除注释)拷自dlmanning/gulp-sass

gulp.task('sass', function () {
  // 这里有 return , 和不加 return 有什么区别
  return gulp.src('./sass/**/*.scss')
    .pipe(sass().on('error', sass.logError))
    .pipe(gulp.dest('./css'));
});

gulp.task('sass:watch', function () {
  // 这里没有 return
  gulp.watch('./sass/**/*.scss', ['sass']);
});
阅读 7.8k
6 个回答

谢邀。

默认情况下函数的返回值为undefined(即没有显示地定义返回值的话),但是构造函数比较例外,new构造函数在没有return的情况下默认返回新创建的对象。但是在有显示返回值的情况下,如果返回值为基本数据类型的话(string,number,boolean,undefined,null),返回值仍然为新创建的对象,这一点比较奇怪,需要注意。只有在显示返回一个非基本数据类型的对象的时候,函数的返回值才为指定的对象。在这种情况下,this值所引用的对象就被丢弃了。

在gulp这里,返回的是gulp.src这个对象,以便接下来的回调(如果有的话)能继续调用这个gulp.src对象,完成其他的事情。

有return函数执行完返回return后的内容,没有的话函数执行完返回undefined

新手上路,请多包涵

有return你可以像jquery一样链式调用

$('xx').text('xxx').attr('src','xxx')

return就是返回一个值,给调用的地方

你上面的gulp-sass是把把sass转换成css,下面的sass:watch是监听sass改变了 改变就出发sass任务;
所以用return返回css文件

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题