"箭头功能"不在IE工作,为什么?

时间:2016-10-24 10:22:11

标签: javascript internet-explorer

< p>下面的代码片段在IE 11中不起作用,它会在控制台中引发语法错误< / p> <预><代码> g.selectAll(" .mainBars&#34)。追加("文本&#34)。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&#34 ;)); < /代码>< /预> < p>使用< code> d3.js< / code>用于可视化的二分图< / p> < p>此代码导致上述声明中的问题< code> d =>(d.part ==" primary"?-40:40)< / code>< / p>

5 个答案:

答案 0 :(得分:76)

您正在使用箭头功能。 IE11不支持它们。请改用function函数。

此处Babel's将其翻译为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";
});

答案 1 :(得分:14)

如果您需要支持IE 11 it is not supported

,请避免使用箭头功能

将这些更改为常规功能,您的代码应该按预期工作

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";
});

答案 2 :(得分:0)

Internet Explorer(IE) 根本不支持 ES6 功能,但您可以安装 BabelJS。但是你也可以编写 vanillaJS 函数来代替。

例如:

const hasBrownEyes = eye.color === "brown" ? true : false

或者只是 vanilla.js:

var hasBrownEyes = false; // default answer, it will be overwritten if it has a brown eye

if (eye.color === "brown") {
    return true;
}

答案 3 :(得分:-1)

通常,在箭头功能是箭头功能之前,它们是常规的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);

答案 4 :(得分:-2)

IE到目前为止不支持箭头符号,但是有一种便捷的方法可以将ES6代码转换为ES5.1以便在IE中工作。请访问Babel网站,然后将您的代码粘贴到左侧框中,然后将右边的代码复制到JavaScript的早期版本中。

例如,您的代码被转换为:

"use strict";

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";
});