Learn-Redux

Execute Function & Callback

  1. doFunc()
  2. doFunc()()
  3. doFunc()()()
  4. doFunc(parameters)
  5. doFunc(parameters)()
  6. doFunc(callback)
  7. doFunc()(callback)
  8. doFunc(callback)()
  9. doFunc()(callback)()
  10. doFunc(withLogs(callBack))
  11. doFunc(doSomething(withLogs(callBack)))

1. doFunc()

function execLogger() {
  return console.log('Message:', 'Hello World!');
}
execLogger();

//Message: Hello World!

2. doFunc()()

function execLogger() {
  console.log('Hi!!!');
  return function () {
    console.log('Message:', 'Hello World!');
  };
}
execLogger();
// Hi!!!
execLogger()();
// Hi!!!
// Message: Hello World!
function execLogger() {
  console.log('Hi!!!');
  return () => console.log('Message:', 'Hello World!');
}
execLogger()();
// Hi!!!
// Message: Hello World!

3. doFunc()()()

function execLogger() {
  console.log('Lần 1');
  return () => {
    console.log('Lần 2');
    return () => console.log('Message:', 'Hello World!');
  };
}
execLogger();
// Lần 1
execLogger()();
// Lần 1
// Lần 2
execLogger()()();
// Lần 1
// Lần 2
// Message: Hello World!
function execLogger() {
  return () => () => console.log('Message:', 'Hello World!');
}
execLogger()()();
function execLogger() {// 1
  return  () => // 2
          () => // 3
          () => // 4
          () => // 5
      console.log('Message:', 'Hello World!');
}
execLogger()()()()(); // 5 dấu ()
// Message: Hello World!
function execLogger() {
  console.log('Lần 1');
  return function lan2() {
    console.log('Lần 2');
    return function lan3() {
      console.log('Lần 3');
      return function lan4() {
        console.log('Lần 4');
        return function lan5() {
          console.log('Message:', 'Hello World!');
        };
      };
    };
  };
}
execLogger()()()()(); // 5 dấu ()
// Lần 1
// Lần 2
// Lần 3
// Lần 4
// Message: Hello World!
function execLogger() {
  console.log('Lần 1');
  return function () {
    console.log('Lần 2');
    return function () {
      console.log('Lần 3');
      return function () {
        console.log('Lần 4');
        return function () {
          console.log('Message:', 'Hello World!');
        };
      };
    };
  };
}
execLogger()()()()(); // 5 dấu ()
// Lần 1
// Lần 2
// Lần 3
// Lần 4
// Message: Hello World!
function execLogger() {
  console.log('Lần 1');
  return () => {
    console.log('Lần 2');
    return () => {
      console.log('Lần 3');
      return () => {
        console.log('Lần 4');
        return () => {
          console.log('Message:', 'Hello World!');
        };
      };
    };
  };
}
execLogger()()()()(); // 5 dấu ()
// Lần 1
// Lần 2
// Lần 3
// Lần 4
// Message: Hello World!

4. doFunc(parameters)

const arr = [1,2,3]
function execLogger(a) {
  console.log(a);
  return a;
}
execLogger(1);
// 1
execLogger('Hello World');
// Hello World
execLogger(arr);
// [ 1, 2, 3 ]

5. doFunc(parameters)()

const arr = [1, 2, 3];
function execLogger(a) {
  console.log(a);
  return () => {
    console.log('Type: ', typeof a);
    console.log('-------');
  };
}
execLogger(1)();
// 1
// Type:  number

execLogger('Hello World')();
// Hello World  
// Type:  string

execLogger(arr)();
// [ 1, 2, 3 ]  
// Type:  object  

6. doFunc(callback)

function sum(callback) {
  return callback(1);
}

function execLogger(number) {
  let a = number;
  switch (number) {
    case 1:
      a = 'Một!';
      break;
    case 2:
      a = 'Hai!';
      break;
    case 3:
      a = 'Ba!';
      break;
    default:
      a = 'Không!';
  }
  return console.log('Số:', a);
}

sum(execLogger);

7. doFunc()(callback)