ES6--默认参数表达式,参数变动
今天发现个有趣的问题,传入默认参数是个函数时,自定义参数回变动。
先上例子再说
let value = 5; function getValue() { return value++; } function add(first, second = getValue()) { return first+second; } console.log(add(1, 2)); // 不调用getValue() console.log(value); console.log(add(1)); // 调用getValue() console.log(value); console.log(add(1, 2)); // 不调用getValue()
打印结果
3 5 6 6 3
对于例子解释:
如果不传入最后一个整数,就会调用getValue()函数得到正确的默认值。
切记,初次解析函数声明时不会调用getValue()方法,当调用add()函数且不传入第二个参数时才会调用。当调用getValue()时,add()的第二个默认参数值每次都会改变。这个可以在做其他封装时做参考。