javascript - class 关键字在可汗学院编辑器中不起作用

标签 javascript html class khan-academy

此代码在可汗学院 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/

相关文章:

javascript - 我加载这个 js 数组时做错了什么?

javascript - 更新特定对象中的特定属性

html - 如何使列表中心与 html 和 css 对齐?

javascript - Jquery 元素宽度与检查模式元素宽度

Python 类/总是返回 0

javascript - 如果有多个带有 Promise 的请求,如何将响应与请求匹配?

javascript - 如何在 JavaScript 中四舍五入到最接近的整数

javascript - 不能使用 2 个 js 函数,它们之间有 sleep

java - 在继承和利用不同类中的属性方面遇到麻烦

python - Python 类中有 “private” 变量吗?