Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript node.js是否支持';让';陈述_Javascript_Node.js - Fatal编程技术网

Javascript node.js是否支持';让';陈述

Javascript node.js是否支持';让';陈述,javascript,node.js,Javascript,Node.js,node.js是否支持类似what's的let语句 如果没有,有没有办法用一个自动执行的匿名函数或其他什么复制功能 和/或是否有另一个js环境 haslet和 有一个REPL,就像node一样?犀牛 编辑: 这个问题是很久以前提出的。截至2015年末,答案是“是的,是的,确实如此”。Harmony功能默认包含在io.js 3.3中,最近在4.x版本中被带回node.js。我认为node不支持let,但您可以这样做: var a = 5; (function () { var a = 6;

node.js是否支持类似what's的let语句

如果没有,有没有办法用一个自动执行的匿名函数或其他什么复制功能

和/或是否有另一个js环境

  • has
    let
  • 有一个REPL,就像node一样?犀牛
  • 编辑


    这个问题是很久以前提出的。截至2015年末,答案是“是的,是的,确实如此”。Harmony功能默认包含在io.js 3.3中,最近在4.x版本中被带回node.js。

    我认为node不支持
    let
    ,但您可以这样做:

    var a = 5;
    
    (function () {
      var a = 6;
      console.log(a); // => 6
    })();
    
    console.log(a); // => 5
    

    是的,您可以在node.js中使用let,但是您必须使用可选的--harmony标志运行node。请尝试以下test.js:

    然后运行文件
    节点--harmony test.js
    ,结果如下:

    15
    20
    

    我不建议在重要的生产应用程序中使用此功能,但该功能现在可用。

    您可以使用Babel transpiler和
    let
    以及许多其他ES6/ES2015功能

    node --use_strict --harmony_scoping
    
    要使用巴别塔:

    $ npm install --save-dev babel
    
    然后在您的
    包.json中:

    "scripts": {
      "start": "babel-node index.js"
    }
    
    内部
    index.js

    let foo  = 'bar;
    
    然后启动服务器:

    $ npm start
    

    这是一个老问题,公认的答案不再正确

    let
    支持已添加到Node.js4.x


    有关完整版本支持列表,请参阅。

    Node.js支持V8 Javascript引擎(Google)支持的所有语法。@JonathanLonowski谢谢,这是一个非常有用的表。@JonathanLonowski BS。看蒂莫西的答案。我想可能是重复的。只是读起来不好。我要
    来!我想知道你的片段能证明什么。通过创建匿名函数,您还是创建了一个新的作用域。谢谢谢谢!!!完美解决了我的问题,使用循环中的对象对其进行回调。(对象在回调开始之前被覆盖)我的朋友,真是太好了。这个答案在2012年被认为是一个实用的解决方案,但现在V8和Node支持“let”。如果问题出现在我正在使用的模块中,而不是我自己的代码中,该怎么办?我无法安装
    ejs
    ,因为它包含
    let
    @timothy strimple您能评论一下为什么这对于生产应用程序不是一个好主意吗?@TimothySimple您能解释一下为什么使用“use strict”可以工作,而不使用它吗?@ButuzGOL V8只启用
    let
    (以及其他一些功能)在ES6中,当您处于严格模式时。在最新的node.js版本中,这项功能现在可以在没有
    --harmony
    标记的情况下工作。@WilfredHughes对于未来的访问者,
    --harmony
    选项将启用尚未稳定的功能<代码>让
    不再需要
    ——和谐
    。。。它被认为是稳定的,现在可以安全地在生产应用程序中使用。这个答案适用于节点的实际版本,因为简单的
    --harmony
    选项不适用于节点v0.12.4安装带有
    npm install
    的模块时如何?是否有一个
    npm-使用\u strict--harmony\u范围界定
    let foo  = 'bar;
    
    $ npm start