我到底什么时候应该在函数中使用括号?

Mar*_* AJ -1 javascript jquery function es6-promise

这是我的代码

let cleanRoom = function() {
  return new Promise(function(resolve, reject) {
    resolve('Cleaned The Room');
  });
};

let removeGarbage = function(message) {
  return new Promise(function(resolve, reject) {
    resolve(message + ' remove Garbage');
  });
};

let winIcecream = function(message) {
  return new Promise(function(resolve, reject) {
    resolve( message + ' won Icecream');
  });
};

Promise.all([cleanRoom, removeGarbage, winIcecream]). then(function(){
    console.log('all finished');
})

Promise.all([cleanRoom(), removeGarbage(), winIcecream()]). then(function(){
    console.log('all finished');
})
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,两者(带括号和不带括号)都返回相同的结果。那么这样说对吗?

仅当您想要将某些内容传递给函数时才应使用括号。否则没有必要使用它。

Sag*_*b.g 5

这是区别:

  • 首先,Promise.all您传递对function.

  • 第二次,Promise.all您传递对 a 的引用 Promise

如果您想记录结果,您将看到差异:

let cleanRoom = function() {
  return new Promise(function(resolve, reject) {
    resolve('Cleaned The Room');
  });
};

let removeGarbage = function(message) {
  return new Promise(function(resolve, reject) {
    resolve(message + ' remove Garbage');
  });
};

let winIcecream = function(message) {
  return new Promise(function(resolve, reject) {
    resolve( message + ' won Icecream');
  });
};

Promise.all([cleanRoom, removeGarbage, winIcecream]).then(function(result){
	console.log(result);
})

Promise.all([cleanRoom(), removeGarbage('foo'), winIcecream('bar')]).then(function(result){
	console.log(result);
})
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

编辑
我忘了提及,在您的某些函数中您希望获得一个message参数。
嗯,不使用括号就无法传递它。