1> 标签函数
let name = 'zz'
let age ='18'
function tag (tags,name, age){
console.log(tages)
console.log(name)
console.log(age)
}
tag`today${name}is${age}years`
执行之后就是
可以理解为第一个参数是模板字面量中的字符串数组,之后参数为模板字面量中的变量
2> 剩余参数和arguments对象的区别
let name = 'zz'
let age ='18'
function tag (tags,...args){
console.log(tags)
console.log(args)
console.log(arguments)
}
tag`today${name}is${age}years`
执行之后就是
// [ 'today', 'is', 'years'] 第一个参数依然是字符串数组
// ['zz', '18] args就是剩余参数
// Arguments(3)[[ 'today', 'is', 'years'], 'zz', '18'] arguments对象类数组,包含所有参数
如果这里是正常函数
tag(name,age,'years')
// 'zz'
// ['18', 'years']
// Arguments(3)[['zz', '18', 'years']
剩余参数就是除了已经接收的变量外剩下的变量数组,接收的变量可以没有,可以有一个或多个,是一个真的数组,可以使用数组方法
arguments对象是一个包含所有变量的类数组,除了有length外,数组的其他属性都没有,也不能用数组方法,只能在函数内使用,可以使用下标 arguments[0] = 'value' 来拿到值并且可以修改
也可以转成真正的数组使用,如下
const args = Array.from(arguments);
const args = [...arguments];