标签: ecmascript-next

Destructure扩展导入ES6

import {Component, ...actions} from '../MyModule';
Run Code Online (Sandbox Code Playgroud)

似乎是在抛出一个linting错误.您是否有理由不能在ES6导入声明中"传播"?

javascript module ecmascript-6 ecmascript-next

10
推荐指数
1
解决办法
3685
查看次数

当关键字后面的表达式没有评估为承诺时,`await`会发生什么?

我有这样的ES7代码.

async function returnsfive() {
  var three = 3;
  var threeP = await three;
  return threeP+2;
}

returnsfive().then(k=>console.log(k), e=>console.error("err", e))
Run Code Online (Sandbox Code Playgroud)

var threeP = await three线应该怎么办?

代码应该按预期继续,还是失败,因为three这不是承诺?

这个repo中,它被称为"Debatable Syntax&Semantics".我无法阅读官方文档以找到确切的定义,因为它太技术性了.

默认的babel.js转换按预期记录5; 然而,nodent- 一个不同的变换 - 打印TypeError: three.then is not a function.哪个是正确的,为什么?

javascript async-await ecmascript-next

10
推荐指数
1
解决办法
192
查看次数

使用扩展语法时,从变量字符串(es6)添加键

我想知道在es6中使用扩展语法时是否有一种干净的方法来设置字符串变量的键值?

类似于以下内容:

let keyVar = 'newKey'
let newObject = {keyVar:{some:'json'},...oldObject}
Run Code Online (Sandbox Code Playgroud)


但这会导致:

{"keyVar":{"some":"json"}, ... }

而不是:

{"newKey":{"some":"json"}, ... }

javascript ecmascript-6 ecmascript-next

10
推荐指数
1
解决办法
3964
查看次数

如何使用和应用JavaScript装饰器?

我试图理解如何在一个非常简单的代码中使用装饰器,所以我可以将这个概念应用到我的大项目中.从阿迪·奥斯马尼的文章以提示在这里,我创建了如下一段简单的代码.

说,我有一个叫做的类Cat,有一个meow()方法,我想用一些日志来装饰它,如下所示.

class Cat {
  @logger
  meow() { console.log( ' Meeeoow! ') }
};


function logger(target, key, descriptor) {
  console.log("Cat snarling...");
  return descriptor;
}

const cat = new Cat();
cat.meow();
Run Code Online (Sandbox Code Playgroud)

当我尝试对Node.js解释器(版本9.1.0)执行此操作时,我收到以下错误.

/Users/ravindranath/projects/decorators/index.js:2   @logger   ^

SyntaxError: Invalid or unexpected token
    at createScript (vm.js:80:10)
    at Object.runInThisContext (vm.js:152:10)
    at Module._compile (module.js:605:28)
    at Object.Module._extensions..js (module.js:652:10)
    at Module.load (module.js:560:32)
    at tryModuleLoad (module.js:503:12)
    at Function.Module._load (module.js:495:3)
    at Function.Module.runMain (module.js:682:10)
    at startup (bootstrap_node.js:191:16)
    at bootstrap_node.js:613:3

所以,我的问题是:

  1. Node.js 9.x是否支持装饰器语法?或者它是否会出现在未来的某个版本中?

  2. express-js在GitHub上看到一些基于装饰的东西,但我无法弄清楚如何创建自己的装饰器.有人可以提供一个使用Node.js创建自定义装饰器的简单基本示例吗?

decorator node.js ecmascript-next

10
推荐指数
1
解决办法
9055
查看次数

为什么我的正则表达式对于 RegExp u 标志有效,但对于 v 标志无效,并且在 HTML 模式属性中不起作用?

我收到此正则表达式模式的以下控制台警告:

^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9]+\\.[a-zA-Z0-9]+$
Run Code Online (Sandbox Code Playgroud)

Pattern 属性值^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9]+\.[a-zA-Z0-9]+$对于 RegExp 标志有效u,但对于以下v标志无效:
未捕获的语法错误:无效的正则表达式:/^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9]+\.[a-zA-Z0-9]+$/v:字符类中的字符无效。

我看不到如何为此警告创建有效的正则表达式模式。请问有人可以解释一下这个错误以及如何解决它吗?

我尝试查看文档,但无法了解如何使其对v标志有效

html javascript regex html-input ecmascript-next

10
推荐指数
1
解决办法
5161
查看次数

9
推荐指数
1
解决办法
3647
查看次数

Node.js最佳实践异常处理 - 异步/等待之后

他们已经对这个话题提出了疑问

Node.js最佳实践异常处理

这是旧的,答案已经过时,domains甚至已经被弃用了.

现在在Async/Await Node.js之后的场景中,我们不应该同样考虑同步和异步情况,并在同步函数中抛出异常并拒绝异步函数中的promise,而不是Error在前一种情况下返回实例.

let divideSync = function(x,y) {
    // if error condition?
    if ( y === 0 ) {
        // "throw" the error 
        throw new Error("Can't divide by zero exception")
    }
    else {
        // no error occured, continue on
        return x/y
    }
}
Run Code Online (Sandbox Code Playgroud)

模拟异步除法运算

let divideAsync = function(x, y) {

  return new Promise(function(resolve, reject) {

    setTimeout(function() {
      // if error condition?
      if (y === 0) {
        // "throw" the error safely by rejecting the …
Run Code Online (Sandbox Code Playgroud)

javascript node.js async-await ecmascript-next

8
推荐指数
1
解决办法
5023
查看次数

用于JS装饰器的ESLint意外字符'@'

我正在尝试在我的JS项目中使用装饰器,但是ESLint正在抛出一个错误,指出@符号是一个意外的字符.

我的代码:

@observable items = [];
Run Code Online (Sandbox Code Playgroud)

我的.eslintrc:

{
    "parserOptions": {
            "ecmaVersion": 6,
            "ecmaFeatures": {
                "jsx": true
            },
            "sourceType": "module"
    },
    "env": {
            "browser": true,
            "node": true,
            "es6": false
    },
    "ecmaFeatures": {
            "modules": true
    },
    "rules": {
        "strict": [
            2,
            "global"
        ],
        "quotes": [
            2,
            "single"
        ],
        "indent": [
            2,
            4
        ],
        "eqeqeq": [
            2,
            "smart"
        ],
        "semi": [
            2,
            "always"
        ],
        "max-depth": [
            2,
            4
        ],
        "max-statements": [
            2,
            15
        ],
        "complexity": [
            2,
            5
        ]
    }
}
Run Code Online (Sandbox Code Playgroud)

javascript eslint ecmascript-next

8
推荐指数
2
解决办法
8749
查看次数

Arrow使用Babel作为类属性

有人可以解释React中的Babel如何支持胖箭头函数作为类属性?使用Babel 尝试一下我可以看到它们不受支持:

class Question {

  // Property (not supported)
  myProp = () => {
    return 'Hello, world!';
  }

  // Method (supported)
  myFunc() {
    return 'Hello, world!';
  }

}
Run Code Online (Sandbox Code Playgroud)

ES6中不支持类属性(如果我错了,请纠正我),但是在React(使用Babel)中它们可以工作.

我可以使用TypeScript Playground看到方法和属性之间的区别,但我无法清楚地了解Babel是否支持它们.有插件吗?

更新:
我可以看到他们支持使用"babel-preset-stage-0".

javascript class reactjs babeljs ecmascript-next

8
推荐指数
1
解决办法
3711
查看次数

为什么箭头函数作为静态成员值没有词法范围?

class Foo {
  static v = 123;

  static bar = () => this.v;
}

console.log(Foo.bar());
Run Code Online (Sandbox Code Playgroud)

我希望这段代码返回undefined,因为箭头函数是词法范围的,因此this必须急切地绑定到外部范围。

然而,它返回123

为什么会发生这种情况?

是的,我知道它仍然是第 3 阶段,但仍然 - 为什么提议的标准会这样?(有关另一个示例,请参阅https://babeljs.io/docs/en/babel-plugin-transform-class-properties。)

javascript static ecmascript-next es6-class class-fields

8
推荐指数
1
解决办法
150
查看次数