javascript class关键字在Khan Academy编辑器中无效

w6lpcovy  于 2023-11-15  发布在  Java
关注(0)|答案(1)|浏览(109)

这段代码在Khan Academy html编辑器中抛出错误“Unexpected reserved word”。我很确定这是Khan Academy的编辑器的问题,而不是我的代码,但我如何修复它?

<html lang="en"> 
<head>
    <meta charset="utf-8">
    <title>Error</title>
</head>
<body>
    <canvas id="canvas"></canvas>
    <script>
        class Example {
            constructor () {
                
            }
        }
    </script>
</body>
</html>

字符串

anauzrmj

anauzrmj1#

Khan Academy的网页环境使用自定义版本的Slowparse在运行HTML代码之前对其进行lint。这个Slowparse反过来使用了一个近十年过时的Esprima版本来解析任何JavaScript代码。因此,该环境无法解析仅在ECMAScript 2015中引入的类。
您可以通过利用Khan识别的有效脚本类型属性的不完整集合来解决此限制。使用除no value(<script>)和text/javascript之外的任何有效值将避免JavaScript代码的linting(和转换)。
例如,在代码中使用module

<script type="module">
    class Example {
        // ...
    }
</script>

字符串
这里需要注意的是,使用全局变量并不简单。例如,在代码中使用application/javascript媒体类型,由于第一次运行后的语法错误,将默默失败(错误仅记录到浏览器控制台)。这是因为Khan在运行之间没有正确清理环境。您有三种选择来处理此问题:

  • 使用JavaScript模块时要注意与标准脚本的区别(其中之一是默认情况下没有全局作用域的变量)
  • 使用Khan无法识别的JavaScript媒体类型,并在块作用域(例如IIFE)中编写代码
  • 专门使用var关键字或no关键字来“声明”变量

相关问题