메서드를 연속적으로 호출하는 것을 의미한다. 메서드가 해당 값 혹은 객체를 반환하는 경우 해당 타입에 맞는 메서드를 연이어 사용하는 것이 가능하다. 반대로 이야기 하자면, 어떠한 값을 반환하지 않는 메서드의 경우 메서드 체이닝이 불가능하다.
[3,2,1].map(item => item+1).sort().join('') // 234
[3,2,1].forEach((item)=>item+1).sort().join('') // Cannot read properties of undefined (reading 'sort')
Promise 체이닝의 경우 then() 과 catch() 메서드를 활용하는 경우, 동일한 Promise 객체를 반환하기 때문에 체이닝이 가능하다. 단, Promise의 경우 resolved 와 rejected 가 되는 경우로 나뉘며, 비동기적 호출이 진행된다는 점에서 메서드 체이닝과 차이가 있다.