标签: ecmascript-6

Javascript(ES6),导出const vs export默认值

我试图确定这两个之间是否存在任何重大差异,除了能够通过以下方式导入export default:

import myItem from 'myItem';
Run Code Online (Sandbox Code Playgroud)

使用export const我可以做:

import { myItem } from 'myItem';
Run Code Online (Sandbox Code Playgroud)

我想知道除此之外是否存在任何差异和/或用例.

javascript ecmascript-6 es6-modules

175
推荐指数
6
解决办法
8万
查看次数

React:何时使用基于ES6类的组件与功能ES6组件?

花了一些时间学习React后,我理解了创建组件的两个主要范例之间的区别

我的问题是我什么时候应该使用哪一个?为什么?一个在另一个上有什么好处/权衡?

ES6/7课程:


import React, { Component } from 'react';

export class MyComponent extends Component {
  render() {
    return (
      <div></div>
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

功能:


const MyComponent = (props) => {
    return (
      <div></div>
    );
}
Run Code Online (Sandbox Code Playgroud)

只要没有任何状态可以被该组件操纵,我就会想到功能......但是这样吗?

我猜我是否使用任何生命周期方法,最好使用基于类的组件.

javascript ecmascript-6 reactjs redux

169
推荐指数
4
解决办法
4万
查看次数

如何使用箭头函数(公共类字段)作为类方法?

我刚接触使用带有React的ES6类,之前我已经将我的方法绑定到当前对象(在第一个示例中显示),但ES6是否允许我使用箭头将类函数永久绑定到类实例?(当作为回调函数传递时很有用.)当我尝试使用它时,我遇到错误,就像使用CoffeeScript一样:

class SomeClass extends React.Component {

  // Instead of this
  constructor(){
    this.handleInputChange = this.handleInputChange.bind(this)
  }

  // Can I somehow do this? Am i just getting the syntax wrong?
  handleInputChange (val) => {
    console.log('selectionMade: ', val);
  }
Run Code Online (Sandbox Code Playgroud)

因此,如果我要传递SomeClass.handleInputChangesetTimeout它,那么它将被限定为类实例,而不是window对象.

javascript ecmascript-6 reactjs babeljs ecmascript-next

168
推荐指数
4
解决办法
8万
查看次数

如何有条件地导入ES6模块?

我需要做类似的事情:

if (condition) {
    import something from 'something';
}
// ...
if (something) {
    something.doStuff();
}
Run Code Online (Sandbox Code Playgroud)

上面的代码没有编译; 它抛出SyntaxError: ... 'import' and 'export' may only appear at the top level.

我试着用System.import如图所示这里,但我不知道在哪里System的来了.是不是最终被接受的ES6提案?该文章中"programmatic API"的链接将我转储到已弃用的文档页面.

javascript module ecmascript-6

167
推荐指数
7
解决办法
9万
查看次数

如何将Map键转换为数组?

可以说我有以下地图:

let myMap = new Map().set('a', 1).set('b', 2);
Run Code Online (Sandbox Code Playgroud)

我希望根据以上内容获得['a','b'].我目前的解决方案似乎很长很可怕.

let myMap = new Map().set('a', 1).set('b', 2);
let keys = [];
for (let key of myMap)
  keys.push(key);
console.log(keys);
Run Code Online (Sandbox Code Playgroud)

必须有更好的方法,不是吗?

javascript dictionary ecmascript-6

165
推荐指数
5
解决办法
17万
查看次数

Node.js 0.12中提供ECMAScript 6功能

新的稳定版本的Node.js(0.12)最近已经升级了Google的v8 JavaScript引擎v3.28.73.

Node.js中当前存在哪些ECMAScript 6功能,而不使用该--harmony标志?

我检查了几个声称要列出ES 6功能的网站但是所有这些功能看起来都已过时 - 最突出的是,这个表(更新: 现在更新时的当前Node.js状态为0.12),因为有几个功能列为--harmony当我发现其中一些是默认启用时需要标志(地图,集合,符号,仅举几例).更新:节点特定表已经可用

此外,尝试谷歌这个信息纯粹为v8引擎提供了太新的信息 - 当前的v8版本是4.2.*,这远远超过了Node.js使用的.

我希望这个问题(及其答案)将成为Node.js开发人员现在可以使用的ES 6功能的全面总结.

在Node.js 0.12中启用ES 6功能我目前知道:

  • Maps,Sets/WeakMaps,WeakSets
  • 符号
  • Object.observe
  • 承诺
    • .isInteger
    • .isSafeInteger
    • .isNaN
    • 小量
    • .MIN_SAFE_INTEGER
    • .MAX_SAFE_INTEGER
  • 数学
    • .clz32
    • .imul
    • .标志
    • .log10
    • .log2
    • .log1p
    • .expm1
    • .cosh
    • .sinh
    • .tanh
    • .acosh
    • .asinh
    • .atanh
    • .trunc
    • .fround
    • .cbrt
    • .hypot

javascript v8 node.js ecmascript-6

162
推荐指数
1
解决办法
4万
查看次数

从常规ES6类方法中调用静态方法

调用静态方法的标准方法是什么?我可以考虑使用constructor或使用类本身的名称,我不喜欢后者,因为它没有必要.前者是推荐的方式,还是还有其他的东西?

这是一个(人为的)例子:

class SomeObject {
  constructor(n){
    this.n = n;
  }

  static print(n){
    console.log(n);
  }

  printN(){
    this.constructor.print(this.n);
  }
}
Run Code Online (Sandbox Code Playgroud)

javascript static class ecmascript-6 es6-class

161
推荐指数
3
解决办法
10万
查看次数

获得意外的令牌导出

我试图在我的项目中运行一些ES6代码,但我收到意外的令牌导出错误.

export class MyClass {
  constructor() {
    console.log("es6");
  }
}
Run Code Online (Sandbox Code Playgroud)

javascript babel ecmascript-6 webpack

161
推荐指数
7
解决办法
18万
查看次数

eslint:error解析错误:保留关键字"const"

我从ESLint收到此错误:

error  Parsing error: The keyword 'const' is reserved
Run Code Online (Sandbox Code Playgroud)

从这段代码:

const express = require('express');
const app = express();
const _ = require('underscore');
Run Code Online (Sandbox Code Playgroud)

我已经尝试删除node_modules并重新安装所有npm软件包(如此处所示),但无济于事.

javascript node.js ecmascript-6 eslint

161
推荐指数
6
解决办法
7万
查看次数

使用ECMAScript 6

我正在寻找一种在我的浏览器控制台中运行ECMAScript 6代码的方法,但是大多数浏览器都不支持我正在寻找的功能.例如,Firefox是唯一支持箭头功能的浏览器.

有没有办法(扩展名,用户脚本等)我可以在Chrome上运行这些功能?

google-chrome userscripts google-chrome-extension ecmascript-6

158
推荐指数
4
解决办法
9万
查看次数