我正在尝试使用d3.js绘制折线图。
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
如何解决这个问题?
答案 0 :(得分:5)
如果使用现有函数的名称声明变量,则该函数在该上下文中不再可用(变量 shadowed )。更改变量的名称以避免命名冲突。
此代码与您的代码相同,也许您可以看到发生了什么:
mocha test.spec.js -w
答案 1 :(得分:4)
你正在影响你的功能。
当您声明另一个具有相同名称的变量/函数时,会发生这种情况。你应该做的是给第二个声明另一个名字,就像@andlrc在他的评论中所说的那样。
var lineChartResult = lineChart()...
您可以在此处详细了解阴影:Setting & Shadowing Properties
答案 2 :(得分:0)
如果您不想更改变量名,另一个解决方案是使用this
限定方法名称,以便将其与其前面的变量名称消除歧义:
var lineChart = this.lineChart()...