此代码在可汗学院 html 编辑器中引发错误“意外的保留字”。我很确定这是可汗学院编辑器的问题,而不是我的代码的问题,但我该如何修复它?
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>
<canvas id="canvas"></canvas>
<script>
class Example {
constructor () {
}
}
</script>
</body>
</html>
最佳答案
可汗学院的网页环境使用自定义版本Slowparse在运行 HTML 代码之前检查它。这个 Slowparse 依次使用 Esprima 的版本解析任何 JavaScript 代码已经过时了近十年。因此,环境无法解析仅在ECMAScript 2015中引入的类。 .
您可以通过利用 incomplete set of valid script type attributes 来解决此限制。得到可汗的认可。使用任何 valid value除了没有值( <script>
)和 text/javascript
之外将规避 JavaScript 代码的 linting(和转换)。
例如,使用 module
用你的代码:
<script type="module">
class Example {
// ...
}
</script>
这里需要注意的是,使用全局变量并不简单。使用application/javascript
例如,由于首次运行后出现语法错误,代码中的媒体类型将默默失败(错误仅记录到浏览器控制台)。这是因为汗没有正确clean运行之间的环境。您有三种选择来处理这个问题:
- 使用 JavaScript 模块时请记住 differences to standard scripts (其中之一方便的是默认情况下不是全局范围的变量)
- 使用 Khan 无法识别的 JavaScript 媒体类型并在 block 作用域(例如 IIFE)中编写代码
- 仅使用
var
关键字或无关键字来“声明”变量
关于javascript - class 关键字在可汗学院编辑器中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77426866/