代码之家  ›  专栏  ›  技术社区  ›  Axel

如何将JS const变量编译成浏览器友好的代码,使它们成为只读的?

  •  0
  • Axel  · 技术社区  · 6 年前

    我有以下变量:

    const x = ['item']
    

    然后我尝试使用Babel的实时编译器,它给了我以下编译代码:

    "use strict";
    var x = ["item"];
    

    x = {} )到变量 x ,它给了我一个错误。我看不到任何地方我怎么能改变 var 你说的对吗?

    2 回复  |  直到 6 年前
        1
  •  3
  •   GolezTrol    6 年前

    如果我尝试babel输出,我可以给x赋一个新值,它就工作了。原因是,输出的代码是ECMAScript 5,没有常量的概念。您可以通过在 'JavaScript Demo: Statement - Const' example on MDN

    因此,babel将编译(或“transfile”)它作为一个可赋值变量,因为没有其他方法。但在这个过程中,它会验证您的原始代码,看看您是否没有对x进行赋值,如果您这样做了,它会抛出一个错误。

    作为比较,这同样适用于任何编译器。如果使用十六进制编辑器修改可执行文件,还可以中断编译器在生成可执行文件时所做的任何操作。事实上,如果你在程序完成后修改它(想想图像,文档,…),每个程序的输出都是如此

        2
  •  0
  •   Rajat Raj    6 年前

    你说得对。var通常是可编辑的。我相信您在编写过程中会遇到这个问题。在babel编译期间,它会对const变量进行安全检查。同样的事情也发生在typescript中。