Questions tagged «ecmascript-6»

ECMAScript规范的2015版本现已成为标准(ECMAScript 2015)。仅在问题专门与ECMAScript 2015中提供的新功能或技术更改有关的情况下使用此标记。

14
仅在ES2015中如何生成从0到n的数字范围?
我一直发现rangeJavaScript中缺少该函数,因为它在python和其他版本中可用?ES2015中是否有任何简洁的方法来生成数字范围? 编辑:我的问题与提到的重复问题有所不同,因为它是ES2015而非ECMASCRIPT-5特有的。我还需要范围从0开始,而不是具体的起始数字(尽管如果有的话会很好)

3
使用诸如SystemJS之类的模块加载器时,可以在Safari的Web检查器中进行调试
我创建一个Ionic使用应用程序es6 modules,TypeScript并SystemJS作为一个模块加载器。这是我的设置: tsconfig.json: { "compilerOptions": { ... "target": "es5", "module": "system", ... } } index.html: <script src="lib/system.js"></script> <script src="systemjs.config.js"></script> <script>System.import('js/app.js')</script> 示例脚本(TypeScript): import {IConfig} from "./app-config"; export class ConfigLoader { ... } Chrome一切正常。但是,在使用Safari的Web Inspector进行调试时,我无法在脚本中放置任何断点,因为Web Inspector仅显示直接从HTML(通过脚本标记)加载的脚本,而不显示XHR(在我的情况下是通过SystemJS)加载的脚本。这意味着我无法调试自己的脚本,这当然是不可接受的。 我试图像以前一样通过使用SystemJS来解决此问题,但也将脚本标签放置在html中,如下所示: <script src="lib/system.js"></script> <script src="systemjs.config.js"></script> <script src="js/app-config.js"></script> ... other app scripts <script>System.import('js/app.js')</script> 但是,这不起作用,因为SystemJS对此并不满意: 无效的System.register调用。匿名System.register调用只能由SystemJS.import加载的模块进行,而不能通过脚本标签进行。 如何使用SystemJS,同时又可以在Safari中进行调试?我正在寻找比“在每个脚本中放入调试器语句”更复杂的解决方案。


5
在ES6 / Typescript中将_(下划线)变量与箭头函数一起使用
我在一个Angular示例中遇到了这个构造,我想知道为什么选择它: _ => console.log('Not using any parameters'); 我知道变量_表示不在乎/不使用,但是由于它是唯一的变量,因此没有任何理由更喜欢使用_: () => console.log('Not using any parameters'); 当然,键入的字符数不能少于一个。在我看来()语法更好地传达了意图,并且还更加具体地说明了类型,因为否则我认为第一个示例应该看起来像这样: (_: any) => console.log('Not using any parameters'); 万一重要,这是使用它的上下文: submit(query: string): void { this.router.navigate(['search'], { queryParams: { query: query } }) .then(_ => this.search()); }

4
var {…} =…语句中的花括号有什么作用?
不知道这是否是Mozilla特定的JS语法,但是我经常发现以这种方式声明变量,例如,在附加SDK docs中: var { Hotkey } = require("sdk/hotkeys"); 并在各种Chrome Javascript中(let用代替var), let { classes: Cc, interfaces: Ci, results: Cr, utils: Cu } = Components; 我发现这很令人困惑,但是即使在MDN上,我也找不到有关这两种语法的任何文档。

12
解构以获取es6中数组的最后一个元素
在coffeescript中,这很简单: coffee> a = ['a', 'b', 'program'] [ 'a', 'b', 'program' ] coffee> [_..., b] = a [ 'a', 'b', 'program' ] coffee> b 'program' es6是否允许类似的东西? > const [, b] = [1, 2, 3] 'use strict' > b // it got the second element, not the last one! 2 > …

3
React,ES6-getInitialState在普通的JavaScript类上定义
我具有以下组件(radioOther.jsx): 'use strict'; //module.exports = <-- omitted in update class RadioOther extends React.Component { // omitted in update // getInitialState() { // propTypes: { // name: React.PropTypes.string.isRequired // } // return { // otherChecked: false // } // } componentDidUpdate(prevProps, prevState) { var otherRadBtn = this.refs.otherRadBtn.getDOMNode(); if (prevState.otherChecked !== otherRadBtn.checked) …


9
ES6导出对象的所有值
假设我有一个模块(./my-module.js),其中包含一个对象,该对象应为其返回值: let values = { a: 1, b: 2, c: 3 } // "export values" results in SyntaxError: Unexpected token 所以我可以像这样导入它们: import {a} from './my-module' // a === 1 import * as myModule from './my-module' // myModule.a === 1 我发现的唯一方法是对出口进行硬编码: export let a = values.a export let b = values.b …

7
取消模拟模块时如何在Jest中模拟导入的命名函数
我有以下模块要在Jest中进行测试: // myModule.js export function otherFn() { console.log('do something'); } export function testFn() { otherFn(); // do other things } 如上所示,它导出了一些命名函数并重要地testFn使用otherFn。 在Jest中,当我为其编写单元测试时testFn,我想模拟该otherFn函数,因为我不希望输入错误otherFn影响我的单元测试testFn。我的问题是我不确定做到这一点的最佳方法: // myModule.test.js jest.unmock('myModule'); import { testFn, otherFn } from 'myModule'; describe('test category', () => { it('tests something about testFn', () => { // I want to mock "otherFn" …





8
如何使用ES6类扩展Function?
Наэтотвопросестьответына 堆栈溢出нарусском:Наследованиеотфункции ES6允许扩展特殊对象。因此可以从该函数继承。可以将此类对象称为函数,但是如何实现此类调用的逻辑呢? class Smth extends Function { constructor (x) { // What should be done here super(); } } (new Smth(256))() // to get 256 at this call? 任何类方法都可通过引用类实例this。但是,当将其称为函数时,this是指window。将类实例作为函数调用时,如何获得对它的引用? PS:同样的俄语问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.