Javascript 未捕获类型错误:测试不是函数
由于某种原因,我在给函数命名时出错 但是,如果我将其设置为匿名函数并将其分配给变量,则可以调用该函数Javascript 未捕获类型错误:测试不是函数,javascript,Javascript,由于某种原因,我在给函数命名时出错 但是,如果我将其设置为匿名函数并将其分配给变量,则可以调用该函数 function test(){ console.log(this) } test(); 看起来不错,当你在函数内部调用它时,函数会打印一个对象 功能测试{ 控制台,logthis } 测试这可能是起重问题。若在代码段上方有更多的JS代码,那个么测试可能被分配到了其他地方 这将导致TypeError,因为在调用该测试时,它将是一个字符串: // ... some code var
function test(){
console.log(this)
}
test();
看起来不错,当你在函数内部调用它时,函数会打印一个对象 功能测试{ 控制台,logthis }
测试这可能是起重问题。若在代码段上方有更多的JS代码,那个么测试可能被分配到了其他地方 这将导致TypeError,因为在调用该测试时,它将是一个字符串:
// ... some code
var test = 'This is a test.';
// ... more code
function test() {
console.log(this);
}
test();
// ... some code
var test = 'This is a test.';
// ... more code
test = function () {
console.log(this);
}
test();
这将起作用,因为在调用函数之前,已将测试分配给函数:
// ... some code
var test = 'This is a test.';
// ... more code
function test() {
console.log(this);
}
test();
// ... some code
var test = 'This is a test.';
// ... more code
test = function () {
console.log(this);
}
test();
在第一个示例中,解释器或多或少都是这样做的:
为测试分配一个函数定义。这首先发生,因为它将函数声明提升到高于一切的位置
将测试重新指定为字符串。
调用测试,它是一个字符串。
第二个例子:
声明没有未定义值的测试。
将测试分配给字符串。
将测试重新分配给函数。
调用测试,这是一个函数。
我刚刚对您的代码执行了CTRL+F,似乎您已经在上面的范围中定义了一个名为test的变量。请编辑您的代码以删除上面声明的测试变量请添加错误日志它将有助于删除您的所有代码?任何地方都没有对测试变量的其他引用?第146行已经有var test=yoyo;之后的一行重新定义了它。函数和var声明被挂起,因此重新定义将直接与函数冲突。用于立即查找代码中的问题。@johnbrian我的答案有帮助吗?我调用test时出错。。。我得到了未捕获的TypeError:test不是一个函数。这就是我想说的。@johnbriant,正如你所看到的,这个函数工作正常。可能问题出在其他地方,请分享更多的代码你在windows的sublime中对我的代码按ctrl-f5了吗?你在Mac上是怎么做到的?