为什么这个箭头功能不能在ie11中工作?
Why doesn't this arrow function work in IE 11?
下面的代码不能在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"));
利用d3.js
二部图进行可视化
此代码导致上述语句d=>(d.part=="primary"? -40: 40)
您正在使用箭头函数。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";
});
由于没有代码使用this
,您不必担心保留箭头函数this
行为(因为传统函数通过调用方式获得this
,但是箭头函数接近 this
)。但是,如果代码确实使用了this
,并且您希望它的行为像箭头函数一样,则需要使用通常的技术。
如果您需要支持ie11,请避免使用箭头函数,因为它不支持
将它们更改为常规函数,您的代码应该像您期望的那样工作
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";
});
一般来说,在箭头函数是箭头函数之前,它们是常规的JS function
s。所以在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);
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";
});
IE根本不支持ES6的功能,但是你可以安装BabelJS。但是,您也可以编写香草js函数。
例如: 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;
}
相关文章:
- IE11:indexOf()不在一个页面上工作,但在其他页面上工作
- style.display无法在Chrome、Safari-Firefox、IE11中正常工作
- ajax调用在IE11和chrome中无法正常工作
- jqTree 在 IE11 中不执行保存状态工作正常 FF12.
- onunload和onbeforenlad事件在IE11和IIS中未按预期工作
- 媒体打印css无法在IE11打印预览中工作
- onblur功能在IE11中停止工作
- IE11上的全屏html5播放器不工作
- 水平图像滑块无法在chrome和IE11中工作
- window.location.hash在IE11中不工作
- 在ie11中,getAttribute()不能与Sizzle一起工作
- JavaScript RegExp不工作在IE11和工作在Chrome
- window.history.back(),返回false;“不能在IE11中工作
- 定时器功能不工作在ie11使用jscript apex页面
- CSS动画不能在IE11上工作
- 设置主页Js在IE11中不工作
- LESS不能在IE11中工作-为什么
- 为什么这个箭头功能不能在ie11中工作?
- openweathermap api在IE11中不工作
- button.click()在IE11下不能工作