คำถามติดแท็ก ecmascript-6

ข้อกำหนดคุณสมบัติ ECMAScript เวอร์ชัน 2015 ปัจจุบันเป็นมาตรฐาน (ECMAScript 2015) ใช้แท็กนี้เฉพาะเมื่อคำถามเกี่ยวข้องกับคุณสมบัติใหม่หรือการเปลี่ยนแปลงทางเทคนิคที่ให้ไว้ใน ECMAScript 2015 เท่านั้น

3
วงเล็บปีกกาภายในรายการพารามิเตอร์ฟังก์ชันทำอะไรใน es6
ฉันมักจะเห็นฟังก์ชันที่มีลักษณะเช่นนี้ใน codebase ที่ฉันกำลังทำงานอยู่: const func = ({ param1, param2 }) => { //do stuff } นี่มันทำอะไรกันแน่? ฉันมีปัญหาในการค้นหาใน Google เพราะฉันไม่แน่ใจด้วยซ้ำว่าสิ่งนี้เรียกว่าอะไรหรือจะอธิบายอย่างไรในการค้นหาของ Google

15
จะสร้างช่วงของตัวเลขจาก 0 ถึง n ใน ES2015 เท่านั้นได้อย่างไร
ฉันพบว่าrangeฟังก์ชันที่ขาดหายไปจาก JavaScript เสมอเนื่องจากมีใน python และอื่น ๆ ? มีวิธีที่กระชับในการสร้างช่วงของตัวเลขใน ES2015 หรือไม่? แก้ไข: คำถามของฉันแตกต่างจากที่กล่าวถึงซ้ำเนื่องจากเป็นคำถามเฉพาะสำหรับ ES2015 และไม่ใช่ ECMASCRIPT-5 นอกจากนี้ฉันต้องการให้ช่วงเริ่มต้นจาก 0 และไม่ใช่หมายเลขเริ่มต้นที่เฉพาะเจาะจง (แม้ว่าจะดีถ้ามี)

5
การใช้ตัวแปร _ (ขีดล่าง) กับฟังก์ชันลูกศรใน ES6 / typescript
ฉันเจอโครงสร้างนี้ในตัวอย่างเชิงมุมและฉันสงสัยว่าทำไมถึงเลือกสิ่งนี้: _ => 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()); }

3
การดีบักใน Web Inspector ของ Safari เมื่อใช้ตัวโหลดโมดูลเช่น SystemJS
ฉันสร้างIonicapp ที่ใช้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 อย่างไรก็ตามเมื่อทำการดีบักโดยใช้ Web Inspector ของ Safari ฉันไม่สามารถวางเบรกพอยต์ในสคริปต์ได้เนื่องจาก Web Inspector แสดงเฉพาะสคริปต์ที่โหลดโดยตรงจาก HTML (ผ่านแท็กสคริปต์) ไม่ใช่สคริปต์ที่โหลดโดย XHR …

8
วิธีการจำลองฟังก์ชันที่มีชื่อที่นำเข้าใน Jest เมื่อโมดูลไม่ถูกล็อค
ฉันมีโมดูลต่อไปนี้ที่ฉันกำลังพยายามทดสอบใน Jest: // myModule.js export function otherFn() { console.log('do something'); } export function testFn() { otherFn(); // do other things } ดังที่แสดงไว้ข้างต้นก็ส่งออกฟังก์ชั่นบางชื่อและที่สำคัญการใช้งานtestFnotherFn ล้อเล่นเมื่อผมเขียนทดสอบหน่วยของฉันสำหรับ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 …

4
วงเล็บปีกกาในคำสั่ง `var {…} = …` ทำอะไร?
ไม่แน่ใจว่านี่เป็นไวยากรณ์ JS เฉพาะของ Mozilla หรือไม่ แต่ฉันมักพบตัวแปรที่ประกาศด้วยวิธีนี้เช่นในเอกสาร SDK เสริม : var { Hotkey } = require("sdk/hotkeys"); และใน Chrome Javascript ต่างๆ (ใช้letคำสั่งแทนvar) let { classes: Cc, interfaces: Ci, results: Cr, utils: Cu } = Components; ผมพบว่ามันทำให้เกิดความสับสนมาก แต่ผมไม่สามารถที่จะหาเอกสารใด ๆ เกี่ยวกับไวยากรณ์ทั้งแม้ในMDN

12
ทำลายโครงสร้างเพื่อรับองค์ประกอบสุดท้ายของอาร์เรย์ใน es6
ในกาแฟนี่ตรงไปตรงมา: 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 …

2
ใช้วงเล็บกับไวยากรณ์การนำเข้าจาวาสคริปต์
ฉันเจอไลบรารี javascript ที่ใช้ไวยากรณ์ต่อไปนี้เพื่อนำเข้าไลบรารี: import React, { Component, PropTypes } from 'react'; อะไรคือความแตกต่างระหว่างวิธีการข้างต้นและวิธีต่อไปนี้? import React, Component, PropTypes from 'react';

9
คุณ JSON.stringify ES6 Map ได้อย่างไร
ฉันต้องการเริ่มใช้ES6 Mapแทนออบเจ็กต์ JS แต่ฉันถูกระงับเพราะฉันไม่สามารถหาวิธี JSON.stringify () แผนที่ได้ คีย์ของฉันได้รับการรับรองว่าเป็นสตริงและค่าของฉันจะแสดงอยู่เสมอ ฉันต้องเขียนวิธีการห่อเพื่อทำให้เป็นอนุกรมหรือไม่?

13
setState ไม่อัปเดตสถานะทันที
ฉันอยากจะถามว่าทำไมสถานะของฉันถึงไม่เปลี่ยนไปเมื่อฉันทำกิจกรรม onclick ฉันค้นหามานานแล้วว่าฉันต้องการผูกฟังก์ชัน onclick ในตัวสร้าง แต่สถานะยังไม่อัปเดต นี่คือรหัสของฉัน: import React from 'react'; import Grid from 'react-bootstrap/lib/Grid'; import Row from 'react-bootstrap/lib/Row'; import Col from 'react-bootstrap/lib/Col'; import BoardAddModal from 'components/board/BoardAddModal.jsx'; import style from 'styles/boarditem.css'; class BoardAdd extends React.Component { constructor(props){ super(props); this.state = { boardAddModalShow: false } this.openAddBoardModal = this.openAddBoardModal.bind(this); } openAddBoardModal(){ this.setState({ …

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 …

6
นำเข้ารูปภาพจากไดเร็กทอรีแบบไดนามิกโดยใช้ webpack
นี่คือเวิร์กโฟลว์ปัจจุบันของฉันสำหรับการนำเข้ารูปภาพและไอคอนใน webpack ผ่าน ES6: import cat from './images/cat1.jpg' import cat2 from './images/cat2.svg' import doggy from './images/doggy.png' import turtle from './images/turtle.png' <img src={doggy} /> สิ่งนี้จะยุ่งอย่างรวดเร็ว นี่คือสิ่งที่ฉันต้องการ: import * from './images' <img src={doggy} /> <img src={turtle} /> ฉันรู้สึกว่าต้องมีวิธีการนำเข้าไฟล์ทั้งหมดแบบไดนามิกจากไดเร็กทอรีเฉพาะเป็นนามสกุลของชื่อแล้วใช้ไฟล์เหล่านั้นตามต้องการ ใครเคยเห็นสิ่งนี้หรือมีความคิดใด ๆ เกี่ยวกับวิธีที่ดีที่สุดที่จะไปเกี่ยวกับมัน? อัพเดท: เมื่อใช้คำตอบที่เลือกฉันสามารถทำได้: function importAll(r) { let images = {}; r.keys().map((item, index) …

5
มีวิธีสร้างอินเทอร์เฟซใน ES6 / Node 4 หรือไม่?
ES6 มีให้ใช้งานอย่างสมบูรณ์ในโหนด 4 ฉันสงสัยว่ามันมีแนวคิดของอินเทอร์เฟซเพื่อกำหนดสัญญาวิธีการMyClass implements MyInterfaceหรือไม่ ฉันหาข้อมูลเกี่ยวกับ Googling ไม่ได้มากนัก แต่อาจมีเคล็ดลับหรือวิธีแก้ปัญหาที่ดี

3
JSON กำหนดชุด
JSON.stringify () ชุดหนึ่งจะเป็นอย่างไร สิ่งที่ใช้ไม่ได้ใน Chromium 43: var s = new Set(['foo', 'bar']); JSON.stringify(s); // -> "{}" JSON.stringify(s.values()); // -> "{}" JSON.stringify(s.keys()); // -> "{}" ฉันคาดหวังว่าจะได้สิ่งที่คล้ายกับอาร์เรย์แบบอนุกรม JSON.stringify(["foo", "bar"]); // -> "["foo","bar"]"

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.