当使用“use strict”指令时,反向刻度字符在IE11中不会被识别为有效字符,而它在其他浏览器(如Chrome)中有效。
考虑到即使在Windows 10用户中IE11仍然被广泛使用,这种行为的解释是什么?
"use strict";
function doIt() {
let tt;
tt = 50;
alert(`${tt}`);
alert("test");
}
doIt();
错误:{ “message”:“无效的字符”, “filename”:“http://stacksnippets.net/js”, “lineno”:18, “colno”:17 }
答案 0 :(得分:39)
如果查看ECMAScript 6 compatibility table,您会发现IE11不支持模板文字。 "use strict";
语句并没有真正改变任何内容,因为在确定代码是否处于严格模式之前,必须先对其进行解析,但不能对其进行解析,因为您需要对其进行解析。 ;使用解析器无法识别的语法。
如果您希望代码在IE11中运行,则应使用Babel进行转换。
答案 1 :(得分:0)
如果您只想在现代 Javascript 中编写一小段代码片段,例如 ES6,但需要在旧浏览器中运行的普通 Javascript 版本代码,例如IE11,您可以使用 Babel REPL 进行转译。
示例:
let person = {
name: "John Doe",
city: "Doeville"
};
const markup = `
<div class="person">
<h2>
${person.name}
</h2>
<p class="city">This person lives in ${person.city}.</p>
</div>
`;
document.body.innerHTML = markup;
被转译为:
"use strict";
var person = {
name: "John Doe",
city: "Doeville"
};
var markup = "\n <div class=\"person\">\n <h2>\n ".concat(person.name, "\n </h2>\n <p class=\"city\">This person lives in ").concat(person.city, ".</p>\n </div>\n");
document.body.innerHTML = markup;