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

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

4
สัญลักษณ์วงเล็บวัตถุ Javascript ({การนำทาง} =) ทางด้านซ้ายของการกำหนด
ฉันไม่เคยเห็นไวยากรณ์นี้มาก่อนและฉันสงสัยว่ามันเกี่ยวกับอะไร var { Navigation } = require('react-router'); วงเล็บด้านซ้ายแสดงข้อผิดพลาดทางไวยากรณ์: โทเค็นที่ไม่คาดคิด { ฉันไม่แน่ใจว่าส่วนใดของการกำหนดค่า webpack กำลังเปลี่ยนแปลงหรือวัตถุประสงค์ของไวยากรณ์คืออะไร มันเป็นความสามัคคี? มีใครสามารถสอนฉันได้บ้าง?

10
ชื่ออิมพอร์ตตัวแปร ES6 ใน node.js?
เป็นไปได้หรือไม่ที่จะนำเข้าบางสิ่งบางอย่างไปยังโมดูลที่ให้ชื่อตัวแปรในขณะที่ใช้การนำเข้า ES6 คือฉันต้องการนำเข้าโมดูลบางส่วนที่รันไทม์ขึ้นอยู่กับค่าที่ระบุใน config: import something from './utils/' + variableName;

5
ES6 คุณจะส่งออกโมดูลที่นำเข้าในบรรทัดเดียวได้อย่างไร?
ฉันต้องการทำสิ่งต่อไปนี้ แต่มีบรรทัดเดียวถ้าเป็นไปได้: import Module from './Module/Module;' export Module; ฉันลองทำสิ่งต่อไปนี้แล้ว แต่ดูเหมือนจะไม่ได้ผล: export Module from './Module/Module;

2
ES6 getter / setter พร้อมฟังก์ชั่นลูกศร
ฉันใช้ babel6 และสำหรับโครงการสัตว์เลี้ยงของฉันฉันกำลังสร้างกระดาษห่อหุ้มสำหรับ XMLHttpRequest สำหรับวิธีการที่ฉันสามารถใช้ได้: open = (method, url, something) => { return this.xhr.open(method, url, something); } แต่สำหรับฟังก์ชันลูกศรคุณสมบัติไม่ทำงาน งานนี้: get status() { return this.xhr.status; } แต่ฉันไม่สามารถใช้ get status = () => this.xhr.status; นี่คือเจตนา?

8
จะขยายฟังก์ชันด้วยคลาส ES6 ได้อย่างไร?
Наэтотвопросестьответына Stack Overflow нарусском : Наследованиеотфункции 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: คำถามเดียวกันในภาษารัสเซีย

5
Node.js คลาส ES6 ที่ต้องการ
จนถึงตอนนี้ฉันได้สร้างคลาสและโมดูลnode.jsด้วยวิธีต่อไปนี้: var fs = require('fs'); var animalModule = (function () { /** * Constructor initialize object * @constructor */ var Animal = function (name) { this.name = name; }; Animal.prototype.print = function () { console.log('Name is :'+ this.name); }; return { Animal: Animal } }()); module.exports = animalModule; ตอนนี้ด้วย ES6 …

11
คัดลอกลึกใน ES6 โดยใช้ไวยากรณ์การแพร่กระจาย
ฉันกำลังพยายามสร้างวิธีการคัดลอกแผนที่แบบเจาะลึกสำหรับโปรเจ็กต์ Redux ของฉันซึ่งจะทำงานกับอ็อบเจ็กต์แทนที่จะเป็นอาร์เรย์ ฉันอ่านว่าใน Redux แต่ละรัฐไม่ควรเปลี่ยนแปลงอะไรในสถานะก่อนหน้านี้ export const mapCopy = (object, callback) => { return Object.keys(object).reduce(function (output, key) { output[key] = callback.call(this, {...object[key]}); return output; }, {}); } มันได้ผล: return mapCopy(state, e => { if (e.id === action.id) { e.title = 'new item'; } return e; }) อย่างไรก็ตามมันไม่ได้คัดลอกรายการภายในอย่างลึกล้ำดังนั้นฉันต้องปรับแต่งเพื่อ: export const …

2
เป็นไปได้ไหมที่จะส่งออกฟังก์ชัน Arrow ใน ES6 / 7
คำสั่งการส่งออกด้านล่างแสดงข้อผิดพลาดทางไวยากรณ์ export default const hello = () => console.log("say hello") เพราะอะไร? ฉันสามารถส่งออกฟังก์ชันที่มีชื่อเท่านั้น export function hello() { console.log("hello") } เหตุผลคืออะไร?

13
เปรียบเทียบชุด ECMA6 เพื่อความเท่าเทียมกัน
คุณเปรียบเทียบชุดจาวาสคริปต์สองชุดได้อย่างไร? ฉันลองใช้==และ===แต่ทั้งสองกลับเป็นเท็จ a = new Set([1,2,3]); b = new Set([1,3,2]); a == b; //=> false a === b; //=> false สองชุดนี้มีค่าเท่ากันเนื่องจากตามนิยามแล้วชุดไม่มีลำดับ (อย่างน้อยก็ไม่ใช่โดยปกติ) ฉันได้ดูเอกสารสำหรับ Set on MDNแล้วและไม่พบว่าไม่มีประโยชน์ ใครทราบวิธีการทำเช่นนี้

2
เหตุใดสัญญา javascript ES6 จึงดำเนินการต่อไปหลังจากการแก้ไข
ตามที่ฉันเข้าใจคำสัญญาคือสิ่งที่สามารถแก้ไข () หรือปฏิเสธ () ได้ แต่ฉันรู้สึกแปลกใจที่พบว่ารหัสในสัญญายังคงดำเนินการต่อไปหลังจากมีการเรียกการแก้ไขหรือปฏิเสธ ฉันถือว่าการแก้ไขหรือปฏิเสธเป็นเวอร์ชันที่เป็นมิตรกับสิ่งแวดล้อมของ exit หรือ return ซึ่งจะหยุดการทำงานของฟังก์ชันทันทีทั้งหมด ใครช่วยอธิบายความคิดเบื้องหลังว่าทำไมบางครั้งตัวอย่างต่อไปนี้จึงแสดง console.log หลังจากการโทรแก้ไข: var call = function() { return new Promise(function(resolve, reject) { resolve(); console.log("Doing more stuff, should not be visible after a resolve!"); }); }; call().then(function() { console.log("resolved"); }); jsbin

10
จะขยายคลาสโดยไม่ต้องใช้ super ใน ES6 ได้อย่างไร?
เป็นไปได้ไหมที่จะขยายคลาสใน ES6 โดยไม่เรียกsuperเมธอดเพื่อเรียกใช้คลาสแม่ แก้ไข: คำถามอาจทำให้เข้าใจผิด มันเป็นมาตรฐานที่เราต้องโทรsuper()หรือฉันขาดอะไรไป? ตัวอย่างเช่น: class Character { constructor(){ console.log('invoke character'); } } class Hero extends Character{ constructor(){ super(); // exception thrown here when not called console.log('invoke hero'); } } var hero = new Hero(); เมื่อฉันไม่ได้เรียกsuper()คลาสที่ได้รับมาฉันจะได้รับปัญหาขอบเขต ->this is not defined ฉันใช้สิ่งนี้กับ iojs --harmony ใน v2.3.0

7
เหตุใดฉันจึงสามารถเปลี่ยนค่าของค่าคงที่ในจาวาสคริปต์
ฉันรู้ว่า ES6 ยังไม่ได้มาตรฐาน แต่ปัจจุบันเบราว์เซอร์จำนวนมากรองรับ constคำหลักใน JS ในข้อมูลจำเพาะเขียนไว้ว่า: ค่าของค่าคงที่ไม่สามารถเปลี่ยนแปลงผ่านการกำหนดใหม่และไม่สามารถประกาศค่าคงที่อีกครั้งได้ ด้วยเหตุนี้แม้ว่าจะเป็นไปได้ที่จะประกาศค่าคงที่โดยไม่ต้องกำหนดค่าเริ่มต้น แต่ก็ไม่มีประโยชน์ที่จะทำเช่นนั้น และเมื่อฉันทำสิ่งนี้: const xxx = 6; xxx = 999; xxx++; const yyy = []; yyy = 'string'; yyy = [15, 'a']; ผมเห็นว่าทุกอย่างก็โอเคxxxยังคงมี6และเป็นyyy[] แต่ถ้าฉันทำyyy.push(6); yyy.push(1);อาร์เรย์คงที่ของฉันก็เปลี่ยนไป ตอนนี้มันเป็นและโดยวิธีการที่ผมยังคงไม่สามารถเปลี่ยนแปลงได้ด้วย[6, 1]yyy = 1; ฉันเป็นบั๊กหรือฉันพลาดอะไรไป? ฉันลองใช้ใน chrome และ FF29 ล่าสุด

6
เหตุใดอุปกรณ์ประกอบฉาก JSX จึงไม่ควรใช้ฟังก์ชันลูกศรหรือการผูก
ฉันใช้ผ้าสำลีกับแอป React ของฉันและฉันได้รับข้อผิดพลาดนี้: error JSX props should not use arrow functions react/jsx-no-bind และนี่คือที่ที่ฉันเรียกใช้ฟังก์ชันลูกศร (ด้านในonClick): {this.state.photos.map(tile => ( <span key={tile.img}> <Checkbox defaultChecked={tile.checked} onCheck={() => this.selectPicture(tile)} style={{position: 'absolute', zIndex: 99, padding: 5, backgroundColor: 'rgba(255, 255, 255, 0.72)'}} /> <GridTile title={tile.title} subtitle={<span>by <b>{tile.author}</b></span>} actionIcon={<IconButton onClick={() => this.handleDelete(tile)}><Delete color="white"/></IconButton>} > <img onClick={() => this.handleOpen(tile.img)} …

4
getters และ setters สำหรับคลาส ECMAScript 6 คืออะไร?
ฉันสับสนว่าจุดของ getters และ setters ในคลาส ECMAScript 6 คืออะไร จุดประสงค์คืออะไร? ด้านล่างนี้เป็นตัวอย่างที่ฉันอ้างถึง: class Employee { constructor(name) { this._name = name; } doWork() { return `${this._name} is working`; } get name() { return this._name.toUpperCase(); } set name(newName){ if(newName){ this._name = newName; } } }

2
เหตุใด babel จึงเขียนฟังก์ชันที่นำเข้าใหม่เรียกไปที่ (0, fn) (…)
ให้ไฟล์อินพุตเช่น import { a } from 'b'; function x () { a() } บาเบลจะรวบรวมให้ 'use strict'; var _b = require('b'); function x() { (0, _b.a)(); } แต่เมื่อคอมไพล์ในโหมดหลวมการเรียกใช้ฟังก์ชันจะถูกส่งออกเป็น _b.a(); ฉันได้ทำการวิจัยเกี่ยวกับตำแหน่งที่เพิ่มตัวดำเนินการลูกน้ำด้วยความหวังว่าจะมีความคิดเห็นอธิบาย รหัสผู้รับผิดชอบสำหรับการเพิ่มมันเป็นที่นี่

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