javascript函数执行
我想了解这种情况下的函数调用,state
如何在addView函数定义(这些函数之间的钩子)中将viewFunc解析并将defaultData作为函数参数?javascript函数执行
var defaultData = {
property: [
{
name: 'Adam',
type: 'javascript'
},
{
name: 'Tom',
type: 'Typescript'
}
]
};
function addView(viewFunc){
console.log(" 1. Step I");
viewFunc(defaultData);
console.log(" 2. Step III ");
}
addView((state)=>{
console.log(" 3. Step II & lenght of data set : "+state.property.length);
})
输出:
1. Step I
3. Step II & lenght of data set : 2
2. Step III
在JavaScript中,功能可以作为参数传递给其他函数。调用addView
时,您正在执行的操作是:创建一个匿名函数并将其传递给addView
函数。
viewFunc
变量现在包含对匿名函数的引用。像任何其他函数引用一样,您可以使用参数调用它。当您将对defaultData
对象的引用传递给传入addView
函数的函数时,这就是您正在做的事情。
作为参数传递给其他函数或从另一个函数返回的函数引用被称为first-class functions。
感谢您的好解释,但匿名函数不会引用任何参数,但匿名函数('viewFunc')的引用可以,但不会抛出任何异常? –
你是什么意思?匿名函数*会*取一个参数,并将其命名为'state'。你的代码是有效和正确的。 – PeterMader
我的不好,我是过度的。非常感谢你。 –
不知道我明白这个问题(或为什么你不确定)。 *您*将'defaultData'传递给回调:'viewFunc(defaultData);'。这就是它如何得到它的价值。这与任何其他函数调用相同。 –