ES2015 ${ } 语法在缓冲区上应用 toString()?

ES2015 ${ } syntax apply toString() on a Buffer?

似乎在 ES2015 中,模板字符串 ${ } 语法将 toString() 应用于 Buffer 对象

let a = Buffer.from('hello')

let b = () => {
    console.log(`es6 : ${a}`) // hello
    console.log('raw a : ', a) // <Buffer 68 65 6c 6c 6f>
    console.log('compiled to es5 : ' + a) // hello 
    console.log(+a) // NaN
}

b()

我找不到关于这个主题的足够信息,谁能解释一下?

${} 语法导致在任何 js 对象上调用 toString 方法:

let a = {toString: ()=>("I'm a string")};
console.log(`result: ${a}`);