模板文字语法在 IE11 中不起作用
Template literals syntax is not working in IE11
当使用 "use strict" 指令时,反引号字符在 IE11 中不被识别为有效字符,而它在其他浏览器中工作,例如 Chrome。
考虑到 IE11 即使在 Windows 10 个用户中仍然广泛使用,对这种行为的解释是什么?
"use strict";
function doIt() {
let tt;
tt = 50;
alert(`${tt}`);
alert("test");
}
doIt();
Error: {
"message": "Invalid character",
"filename": "http://stacksnippets.net/js",
"lineno": 18,
"colno": 17
}
如果您查看 ECMAScript 6 compatibility table,您会发现 IE11 不支持模板文字。 "use strict";
语句并没有真正改变任何东西,因为在确定代码是否处于严格模式之前,必须先解析它,但无法解析,因为你使用的语法是解析器无法识别。
如果您希望您的代码在 IE11 中工作,您应该使用 Babel 进行转译。
如果你只想在现代 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;
当使用 "use strict" 指令时,反引号字符在 IE11 中不被识别为有效字符,而它在其他浏览器中工作,例如 Chrome。
考虑到 IE11 即使在 Windows 10 个用户中仍然广泛使用,对这种行为的解释是什么?
"use strict";
function doIt() {
let tt;
tt = 50;
alert(`${tt}`);
alert("test");
}
doIt();
Error: { "message": "Invalid character", "filename": "http://stacksnippets.net/js", "lineno": 18, "colno": 17 }
如果您查看 ECMAScript 6 compatibility table,您会发现 IE11 不支持模板文字。 "use strict";
语句并没有真正改变任何东西,因为在确定代码是否处于严格模式之前,必须先解析它,但无法解析,因为你使用的语法是解析器无法识别。
如果您希望您的代码在 IE11 中工作,您应该使用 Babel 进行转译。
如果你只想在现代 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;