Javascript 请给我介绍一下ES6的例子

Javascript 请给我介绍一下ES6的例子,javascript,Javascript,书中摘录:“默认值是按需计算的,只有在实际需要时: const log = console.log.bind(console); function g(x=log('x'), y=log('y')) {return 'DONE'} 为什么当我给这个函数一个实际参数时,它返回y,当两个参数时,它只返回'DONE',但如果我不给它任何动作。参数,它将产生x,y和return语句 >> g(0) y "DONE" >> g() x y 'DONE' >> g

书中摘录:“默认值是按需计算的,只有在实际需要时:

const log = console.log.bind(console);

function g(x=log('x'), y=log('y')) {return 'DONE'}
为什么当我给这个函数一个实际参数时,它返回y,当两个参数时,它只返回'DONE',但如果我不给它任何动作。参数,它将产生x,y和return语句

>> g(0)
y
"DONE"

>> g()
x
y
'DONE'

>> g(1)
y
'DONE'

g(1, 2)
'DONE'

此函数声明说明:

function g(x=log('x'), y=log('y')) {return 'DONE'}
如果未传入
x
,则计算
log(x)
,它只是
控制台。log(x)
(这导致
“x”写入控制台)
;如果未传入
y
,则计算
日志(y)

如果传入
x
y
则无需计算值,因此不会计算
log(x)
(或y),并且不会得到控制台日志。如果不传入值,则会调用
log()
将值写入控制台。无论传入什么,函数的返回值都是
DONE


这是一个非常人工的例子,但它看起来像是要证明,如果你传入一个值,等式的右边永远不会被计算。

你在函数中设置为
x
y
的值是
默认值。这意味着如果你没有向函数
g传递任何参数de>,它将使用您设置为默认值的值
x=log('x')和y=log('y')

g(0)
g(x=0,y=log('y'))相同
因此只有
y
被注销。您在函数内部对
0
不做任何操作,因此只返回
DONE

g()
g(x=log('x'),y=log('y'))
相同,因此
x
y
都会注销

g(1)
与第一个示例相同:
g(x=1,y=log('y'))
因此只有
y
被注销。您对函数中的
1
不做任何操作,因此只返回
DONE

g(1,2)
g(x=1,y=2)
相同,因此不会注销任何内容,因为您在函数中不使用
1和
。只返回
DONE