使用“use strict”指令时,模板文字在IE11中不起作用

时间:2016-11-29 17:08:13

标签: javascript internet-explorer ecmascript-6 internet-explorer-11 template-literals

当使用“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   }

2 个答案:

答案 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;