未捕获的TypeError:..不是javascript中的函数

时间:2016-04-26 08:44:50

标签: javascript jquery d3.js

我正在尝试使用d3.js绘制折线图。

的Javascript

function lineChart(){
    ...
}

function update(){
    ...
    var lineChart = lineChart()
        .x(d3.scale.linear().domain([2011, 2014]))
        .y(d3.scale.linear().domain([0, 1000000]));
    ...
}

但是控制台说Uncaught TypeError: lineChart is not a function 如何解决这个问题?

3 个答案:

答案 0 :(得分:5)

如果使用现有函数的名称声明变量,则该函数在该上下文中不再可用(变量 shadowed )。更改变量的名称以避免命名冲突。

此代码与您的代码相同,也许您可​​以看到发生了什么:

mocha test.spec.js -w

答案 1 :(得分:4)

你正在影响你的功能。

当您声明另一个具有相同名称的变量/函数时,会发生这种情况。你应该做的是给第二个声明另一个名字,就像@andlrc在他的评论中所说的那样。

var lineChartResult = lineChart()...

您可以在此处详细了解阴影:Setting & Shadowing Properties

答案 2 :(得分:0)

如果您不想更改变量名,另一个解决方案是使用this限定方法名称,以便将其与其前面的变量名称消除歧义:

var lineChart = this.lineChart()...