模板文字语法在 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;