我可以在父空间中的函数中引用函数吗?
Can I reference a function within a function that is in parent space?
我的函数没有按照预期的方式运行,我正试图确定是否因为我对作用域有误解。
下面的函数搜索一个名为dataLayer
的数组,看看是否有任何对象具有与字符串匹配的eventAction
属性。
这个想法是,如果我找不到一个匹配的值,然后将一个值推入dataLayer
数组,否则什么都不做。
我有一个引用另一个函数的函数。getNegativeErrs()
参考getByValue()
.
让它工作的合适方法是什么?如何使getByValue()
对其他功能可用?
var errors = [
'Your password must be at least 6 characters long.',
'Please enter a valid email address.'
];
getNegativeErrs(errors);
function getNegativeErrs(ers) {
for( i in errors ) {
var errobj = getByValue(dataLayer, errors[i]); //updated based on comments
if(!errobj) { // if errobj is undefined continue. errobj is undefined when it should have a value so getByValue() not working as expected
dataLayer.push({
'event': 'negative_errors',
'unseen': errors[i]
})
}
}
}
function getByValue(arr, value) {
for (var j=0, jLen=arr.length; j<jLen; j++) {
if (arr[j].eventAction == value) return arr[j];
}
}
getByValue
的第二个参数应该是字符串还是整数?当前它是一个整数,它是您循环遍历的errors
数组的索引。你的循环像这样调用getByValue
:
getByValue(dataLayer, 0)
getByValue(dataLayer, 1)
如果您想传递值而不是索引,则将getByValue(dataLayer, i)
更改为getByValue(dataLayer, errors[i])
。
如果这是你的代码范围,getByValue()
是在全局作用域中,应该是可访问的。
如果是这样,看起来这可能无法工作,因为没有定义dataLayers
。
另外,请注意getNegativeErrors()
没有使用传递给它的ers
参数,而是使用全局作用域中的errors
变量。
function getNegativeErrs(ers) {
for( i in errors ) {
函数getnegativeerrors有问题,您没有使用传递给它的参数。它应该是这样的
function getNegativeErrs(ers) {
for( i in ers ) {
var errobj = getByValue(dataLayer, ers[i]); //updated based on comments
if(!errobj) { // if errobj is undefined continue. errobj is undefined when it should have a value so getByValue() not working as expected
dataLayer.push({
'event': 'negative_errors',
'unseen': ers[i]
});
}
}
}
此外,您正在检查dataLayer
数组中是否存在与键eventAction
匹配的错误,但随后在上述函数中,您正在添加键event
…任何一个都可以,你只需要使它们相同。但我不认为这是一个范围问题。如果您想完全排除这种情况,只需将getByValue
函数剪切并粘贴到getNegativeErrs
函数上方即可。
- 如何在JavaScript中将字符串转换为函数引用
- IIFE中的函数引用不可用
- Wordpress中的Javascript出现匿名函数/引用错误
- 将函数引用存储在散列中在javascript中无法正常工作
- Google可视化addListener调用函数引用错误
- 如何存储包含参数的JS函数引用
- 如何从函数引用元素(从事件侦听器调用)
- 将函数引用传递给嵌套闭包
- Javascript递归函数引用了这一点
- 在Node.js中,从同一文件中的另一个函数引用一个函数会导致'ReferenceError:-函数-未定义
- 为什么将函数引用封装到匿名函数中可以更正'这'指向
- 如何在ES6中使用Arrow函数引用对象内部的其他函数
- 复制不带属性的函数引用
- 在控制器中使用具有函数引用的服务
- Jquery 和闭包或函数引用不起作用
- 将函数引用传递给函数失败
- Jasmine spyOn:当传递间谍函数引用时如何使其工作
- 从 Javascript 中的嵌套函数引用对象成员
- Typescript-不同文件中的模块函数引用-“;找不到符号“;
- 与许多事件侦听器和函数引用一个对象相比,什么是更好的方法