1> 标签函数/剩余参数/arguments对象

186 阅读1分钟

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`
执行之后就是
// [ 'today', 'is', 'years']
// 'zz'
// '18'

可以理解为第一个参数是模板字面量中的字符串数组,之后参数为模板字面量中的变量

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];