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

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

6
วิธีที่ดีที่สุดในการเติมคุณสมบัติ ES6 ในแอป React ที่ใช้ create-react-app
ฉันได้ทดสอบแอปพลิเคชัน React.js ของฉันบน internet explorer และพบว่ารหัส ES6 / 7 บางรหัสชอบArray.prototype.includes()ทำลาย ฉันใช้create-react-appและเห็นได้ชัดว่าพวกเขาเลือกที่จะไม่รวม polyfills จำนวนมากเนื่องจากไม่ใช่ทุกคนที่ต้องการและทำให้เวลาในการสร้างช้าลง (ดูตัวอย่างที่นี่และที่นี่ ) เอกสาร (ขณะเขียน) แนะนำ: หากคุณใช้คุณสมบัติ ES6 + อื่น ๆ ที่ต้องการการสนับสนุนรันไทม์ (เช่น Array.from () หรือ Symbol) ตรวจสอบให้แน่ใจว่าคุณได้ใส่ polyfills ที่เหมาะสมด้วยตนเองหรือว่าเบราว์เซอร์ที่คุณกำหนดเป้าหมายรองรับอยู่แล้ว ดังนั้น ... วิธีที่ดีที่สุดในการ "รวม" ด้วยตนเองคืออะไร?

3
ไม่สามารถกำหนด () ค่าการส่งออกเริ่มต้นใน Babel 6.x
ใน Babel 5.x ฉันสามารถเขียนโค้ดต่อไปนี้: app.js export default function (){} index.js require('babel/register'); require('./app')(); จากนั้นฉันสามารถทำงานได้node index.jsโดยไม่มีข้อผิดพลาด อย่างไรก็ตามการใช้ Babel 6.x เรียกใช้รหัสต่อไปนี้ index.es6.js require('babel-core/register'); require('./app')(); ส่งผลให้เกิดข้อผิดพลาด ต้องใช้ (... ) ไม่ใช่ฟังก์ชัน ฉันอยากรู้ว่าทำไม?

7
เหตุใด Objects จึงไม่สามารถทำซ้ำได้ใน JavaScript
เหตุใดวัตถุจึงไม่สามารถทำซ้ำได้ตามค่าเริ่มต้น ฉันเห็นคำถามตลอดเวลาที่เกี่ยวข้องกับการวนซ้ำออบเจ็กต์วิธีแก้ปัญหาทั่วไปคือการวนซ้ำคุณสมบัติของอ็อบเจ็กต์และเข้าถึงค่าภายในอ็อบเจ็กต์ด้วยวิธีนั้น สิ่งนี้ดูธรรมดามากจนทำให้ฉันสงสัยว่าทำไมวัตถุต่างๆถึงไม่สามารถทำซ้ำได้ คำสั่งเช่น ES6 for...ofน่าใช้สำหรับวัตถุโดยค่าเริ่มต้น เนื่องจากคุณลักษณะเหล่านี้มีให้เฉพาะสำหรับ "อ็อบเจ็กต์ที่ทำซ้ำได้" แบบพิเศษซึ่งไม่รวมอ{}อบเจ็กต์เราจึงต้องผ่านห่วงเพื่อให้สามารถใช้งานกับวัตถุที่เราต้องการใช้ คำสั่ง for ... of สร้าง loop วนซ้ำบนวัตถุที่ทำซ้ำได้ (รวมถึง Array, Map, Set, วัตถุอาร์กิวเมนต์และอื่น ๆ ) ... ตัวอย่างเช่นการใช้ฟังก์ชันเครื่องกำเนิด ES6 : var example = {a: {e: 'one', f: 'two'}, b: {g: 'three'}, c: {h: 'four', i: 'five'}}; function* entries(obj) { for (let key of …

2
ไวยากรณ์ ES2015 (ES6) `class` ให้ประโยชน์อะไรบ้าง?
ฉันมีคำถามมากมายเกี่ยวกับคลาส ES6 ประโยชน์ของการใช้classไวยากรณ์คืออะไร? ฉันอ่านว่า public / private / static จะเป็นส่วนหนึ่งของ ES7 นั่นคือเหตุผลหรือไม่? ยิ่งไปกว่านั้นclassOOP ประเภทอื่นหรือยังคงเป็นมรดกต้นแบบของ JavaScript? ฉันสามารถแก้ไขโดยใช้.prototype? หรือเป็นเพียงวัตถุชิ้นเดียวกัน แต่มีสองวิธีในการประกาศ มีประโยชน์ด้านความเร็วหรือไม่? อาจจะง่ายกว่าในการดูแลรักษา / ทำความเข้าใจหากคุณมีแอปพลิเคชันขนาดใหญ่เช่นแอปใหญ่

5
ฉันจะสร้าง "ฟิลด์คงที่สาธารณะ" ในคลาส ES6 ได้อย่างไร
ฉันกำลังสร้างคลาส Javascript และฉันต้องการมีฟิลด์แบบคงที่สาธารณะเช่นใน Java นี่คือรหัสที่เกี่ยวข้อง: export default class Agent { CIRCLE: 1, SQUARE: 2, ... นี่คือข้อผิดพลาดที่ฉันได้รับ: line 2, col 11, Class properties must be methods. Expected '(' but instead saw ':'. ดูเหมือนว่าโมดูล ES6 จะไม่อนุญาต มีวิธีทำให้ได้พฤติกรรมที่ต้องการหรือไม่หรือต้องเขียน getter?

4
โมดูล ES6 ในเบราว์เซอร์: Uncaught SyntaxError: การนำเข้าโทเค็นที่ไม่คาดคิด
ฉันเพิ่งเริ่มใช้ES6 (ECMAScript 6) และฉันต้องการใช้ระบบโมดูลในเบราว์เซอร์ ฉันอ่าน ES6 ได้รับการสนับสนุนโดย Firefox และ Chrome แต่ฉันได้รับข้อผิดพลาดต่อไปนี้โดยใช้export Uncaught SyntaxError: Unexpected token import ฉันมีไฟล์ test.html <html> <script src="test.js"></script> <body> </body> </html> และไฟล์ test.js 'use strict'; class Test { static hello() { console.log("hello world"); } } export Test; ทำไม?

5
ES6: งบการนำเข้าตามเงื่อนไขและแบบไดนามิก
เงื่อนไข เป็นไปได้ไหมที่จะมีข้อความนำเข้าแบบมีเงื่อนไขเช่นด้านล่างนี้ if (foo === bar) { import Baz from './Baz'; } ฉันได้ลองข้างต้นแล้ว แต่ได้รับข้อผิดพลาดต่อไปนี้ (จาก Babel) เมื่อทำการคอมไพล์ 'import' and 'export' may only appear at the top level ไดนามิก เป็นไปได้ไหมที่จะมีคำสั่งการนำเข้าแบบไดนามิกเช่นด้านล่าง for (let foo in bar) { if (bar.hasOwnProperty(foo)) { import Baz from `./${foo}`; } } ข้างต้นได้รับข้อผิดพลาดเดียวกันจาก Babel ในขณะที่รวบรวม เป็นไปได้หรือไม่หรือมีบางอย่างที่ฉันขาดหายไป? การใช้เหตุผล เหตุผลที่ฉันพยายามทำเช่นนี้คือฉันมีการนำเข้าจำนวนมากสำหรับ …

5
คำหลัก "const" ไม่ทำให้ค่าไม่เปลี่ยนรูป หมายความว่าอย่างไร?
มีคำจำกัดความของ constในการสำรวจ ES6โดย Dr. Axel Rauschmayer: constทำงานเหมือนปล่อยให้ แต่ตัวแปรที่คุณประกาศจะต้องเริ่มต้นได้ทันทีที่มีค่าที่ไม่สามารถเปลี่ยนแปลงได้หลังจากนั้น […] const bar = 123; bar = 456; // TypeError: `bar` is read-only แล้วเขาก็เขียน หลุมพราง: const ไม่ทำให้ค่าไม่เปลี่ยนรูป const หมายความว่าตัวแปรจะมีค่าเท่ากันเสมอ แต่ไม่ได้หมายความว่าค่านั้นเป็นหรือไม่เปลี่ยนรูป ฉันสับสนเล็กน้อยกับข้อผิดพลาดนี้ มีใครสามารถกำหนดข้อผิดพลาดconstนี้ให้ชัดเจนได้หรือไม่?

12
ข้อผิดพลาด: ไม่พบ“ es2015” ที่ตั้งไว้ล่วงหน้าซึ่งสัมพันธ์กับไดเรกทอรี“ / Users / ชื่อผู้ใช้”
ฉันได้รับข้อผิดพลาดต่อไปนี้เมื่อพยายามใช้ gulp-babel: ข้อผิดพลาด: ไม่พบ "es2015" ที่ตั้งไว้ล่วงหน้าที่สัมพันธ์กับไดเร็กทอรี "/ Users / username" ฉันมีการตั้งค่าล่วงหน้า es2015 ไว้ทั่วโลกและในเครื่องดังนั้นจึงไม่เห็นว่าทำไมถึงเป็นปัญหา ด้านล่างนี้คือการตั้งค่าอึกของฉันและ package.json var babel = require('gulp-babel'); var es2015 = require('babel-preset-es2015'); gulp.task('babel', function() { return gulp.src('./app/main.js') .pipe(babel({ presets: [es2015] })) .pipe(gulp.dest('dist')); }); Package.json "devDependencies": { "babel-preset-es2015": "^6.3.13", "babel-preset-es2015-node5": "^1.1.1", "browser-sync": "^2.11.0", "gulp": "^3.9.0", "gulp-babel": "^6.1.1", "gulp-stylus": "^2.2.0" } …

4
ทำไม React Hook useState ใช้ const และไม่อนุญาต
วิธีมาตรฐานในการใช้ React useState Hook มีดังต่อไปนี้: const [count, setCount] = useState(0); อย่างไรก็ตามconst countตัวแปรนี้จะถูกกำหนดใหม่ให้เป็นค่าดั้งเดิมที่แตกต่างกันอย่างชัดเจน ทำไมตัวแปรไม่ได้ถูกกำหนดเป็นlet count?

1
typescript: ไม่สามารถใช้คำสั่งนำเข้านอกโมดูล
ฉันมีไฟล์. ts ในโหนด js (เวอร์ชันล่าสุดของ node.js สำหรับ 07.10.19) ที่มีการนำเข้าโหนดโมดูลโดยไม่มีการส่งออกเริ่มต้น ผมใช้การก่อสร้างนี้: เมื่อฉันเรียกใช้รหัสฉันมีข้อผิดพลาดนี้:import { Class } from 'abc';Cannot use import statement outside a module ในเครือข่ายฉันเห็นวิธีแก้ปัญหามากมายสำหรับปัญหานี้ (สำหรับ. js) แต่มันไม่ได้ช่วยอะไรฉันบางทีอาจเป็นเพราะฉันมีไฟล์ typescript นี่คือรหัสของฉัน: import { Class } from 'abc'; module.exports = { ... execute(a : Class ,args : Array<string>){ ... นี่คือ tsconfig.json ของฉัน: { "compilerOptions": …

2
ใน JavaScript ES6 ความแตกต่างระหว่างตัววนซ้ำกับตัววนซ้ำคืออะไร
iterable เหมือนกับ iterator หรือแตกต่างกันหรือไม่? ดูเหมือนว่าจากข้อมูลจำเพาะ iterable เป็นวัตถุพูดobjเช่นนั้นobj[Symbol.iterator]หมายถึงฟังก์ชั่นเพื่อที่เมื่อถูกเรียกกลับวัตถุที่มีnextวิธีการที่จะกลับ{value: ___, done: ___}วัตถุ: function foo() { let i = 0; const wah = { next: function() { if (i <= 2) return { value: (1 + 2 * i++), done: false } else return { value: undefined, done: true } } }; return …

1
ทำไมใน JavaScript (super .__ proto__ === นี้ .__ proto__) จริง
ดูเหมือนว่าใน JavaScript (ES6) super.__proto__ === this.__proto__ชั้นเรียน คุณช่วยอธิบายได้ไหมว่าทำไมในกรณีนี้ พฤติกรรมดูเหมือนว่าสอดคล้องกันในเบราว์เซอร์ที่แตกต่างกันดังนั้นฉันสงสัยว่านี่จะถูกระบุไว้ในสเป็ค พิจารณารหัสต่อไปนี้: class Level1 { myFunc() { console.log('Level1'); } } class Level2 extends Level1 { myFunc() { console.log('Level2'); } } class Level3 extends Level2 { myFunc() { console.log('Level3 BEGIN ' + Math.random()); super.__proto__.myFunc(); console.log(super.__proto__ === this.__proto__); console.log('Level3 END'); } } const foo = …

2
วิธีสร้าง JSDoc สำหรับฟังก์ชัน `pipe`d ES6
ฉันมีฟังก์ชั่น ES6 asyncPipeสไตล์ที่กำหนดไว้โดยใช้องค์ประกอบของฟังก์ชั่น import { getItemAsync } from 'expo-secure-store'; const asyncPipe = (...fns) => x => fns.reduce(async (y, f) => f(await y), x); const getToken = () => getItemAsync('token'); const liftedGetToken = async ({ ...rest }) => ({ token: await getToken(), ...rest, }); const liftedFetch = ({ body, route, token, …

2
ไม่สามารถทดสอบวิธีการโพสต์ด้วย Jest เนื่องจากข้อผิดพลาดไม่สามารถอ่าน mockImplementation ไม่ได้กำหนด
ฉันมีบริการ API ที่ฉันมีวิธีการที่แตกต่างกันในการโทรไปยัง API ฉันได้ทดสอบคำขอ GET ทั้งหมดเรียบร้อยแล้ว แต่ฉันประสบปัญหาในการทดสอบคำขอ POST นี่คือวิธีการ: export default class ApiService { static makeApiCall = <T>( url: string, oneCb: <T>(d: Data) => T, secondCb: (d: T) => void, errorCb?: (a: ErrorModel) => void, method = 'get', data = {}, ): Promise<void> => { const config: AxiosRequestConfig = …

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