"箭头功能"在IE中不起作用,为什么?

pra*_*kol 61 javascript internet-explorer

下面的代码片段在IE 11中不起作用,它会在控制台中引发语法错误

g.selectAll(".mainBars").append("text").attr("x",d=>(d.part=="primary"? -40: 40)).attr("y",d=>+6).text(d=>d.key).attr("text-anchor",d=>(d.part=="primary"? "end": "start"));
Run Code Online (Sandbox Code Playgroud)

使用d3.js二分图进行可视化

此代码导致上述声明中的问题 d=>(d.part=="primary"? -40: 40)

T.J*_*der 91

你正在使用箭头功能.IE11不支持它们.请改用function功能.

这是Babel对ES5 翻译:

g.selectAll(".mainBars").append("text").attr("x", function (d) {
  return d.part == "primary" ? -40 : 40;
}).attr("y", function (d) {
  return +6;
}).text(function (d) {
  return d.key;
}).attr("text-anchor", function (d) {
  return d.part == "primary" ? "end" : "start";
});
Run Code Online (Sandbox Code Playgroud)

  • 不要忘记`this`:`var f = (a) => {a.some1(); this.some2();};` 到 `var f = function(a) {a.some1(); this.some2();}.bind(this);` (4认同)

Szé*_*jos 21

一般来说,在箭头函数成为箭头函数之前,它们是常规的 JS function。所以对于 IE11,我们只需要及时退后一步

var fruits=["apple","banana","orange"];

var modernResult=fruits.find(e => e.includes("nana"));
console.log(modernResult);

var IEresult=fruits.find(function(e){return e.includes("nana")});
console.log(IEresult);

Run Code Online (Sandbox Code Playgroud)

  • 没错,但是这个问题是“箭头函数在 IE 中不起作用”的第一个搜索结果,我给出了一个简单且不太具体(更一般)的解释。但我理解这是违反规则的,抱歉。 (11认同)

Fel*_*ino 16

如果您需要支持IE 11,请避免使用箭头功能,因为它不受支持

将它们更改为常规函数,您的代码应该按预期工作

g.selectAll(".mainBars").append("text").attr("x",function(d) { 
  return d.part=="primary"? -40: 40;
}).attr("y",function(d){
  return +6;
}).text(function(d) { 
  return d.key;
}).attr("text-anchor", function(d) { 
  return d.part=="primary"? "end": "start";
});
Run Code Online (Sandbox Code Playgroud)