34

在其他浏览器(例如 Chrome)中使用“use strict”指令时,反引号字符在 IE11 中不会被识别为有效字符。

考虑到即使在 Windows 10 用户中仍然广泛使用 IE11,对这种行为的解释是什么?

        "use strict";

        function doIt() {
          let tt;
          tt = 50;
          alert(`${tt}`);
          alert("test");
        }
       doIt();

错误:{“消息”:“无效字符”、“文件名”:“ http://stacksnippets.net/js ”、“lineno”:18、“colno”:17 }

4

2 回答 2

61

如果您查看ECMAScript 6 兼容性表,您会发现 IE11 不支持模板文字。该"use strict";语句并没有真正改变任何东西,因为在确定代码是否处于严格模式之前,必须先对其进行解析,但无法解析,因为您使用的是解析器无法识别的语法.

如果您希望您的代码在 IE11 中工作,您应该使用Babel对其进行转译。

于 2016-11-29T17:40:32.367 回答
1

如果你只想用现代 Javascript 编写一个简短的代码片段,比如 ES6,但需要在旧浏览器(例如 IE11)中工作的原始 Javascript 版本的代码,你可以使用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;

于 2021-04-26T09:17:28.120 回答