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上是怎么做到的?