【发布时间】:2018-07-24 01:16:32
【问题描述】:
我在我的 (Javascript) 代码中遇到了一个有趣的问题,我认为这与范围有关。如果是这种情况,我想更好地理解 JS 中的作用域。
我怀疑这是否相关,但我也在使用 React 和 D3。
我的代码要点如下:
// 1
export default class C extends Component {
// 2
componentDidUpdate() {
// 3
...
var node = svg.append('svg')
.append('svg:image')
.attr('xlink:href', function(d) {
// 4
return dict['foo'];
});
}
}
我正在尝试在匿名函数中使用外部对象的内容。
dict = {
foo: 'bar.svg'
};
到目前为止,我发现如果我在 3 或 4 位置声明上述对象,代码执行得很好。但是,如果我将对象声明移到方法之外 (2) 或完全移到类之外 (1),我会收到错误:dict is not defined。
位置 1 和 2 导致它们无法在匿名函数中使用怎么办?
【问题讨论】:
-
return this.dict['foo']; -
AFAIK 你还不能在类声明中声明类变量。 This answer 提到使用 babel(你会做出反应)可能支持这一点,但我不知道它是如何被转译的。添加类变量的 ECMAScript 提议可能是this one。
标签: javascript reactjs d3.js scope anonymous-function