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

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

30
อะไรคือความแตกต่างระหว่างการใช้ "ปล่อย" และ "var"
ECMAScript 6 แนะนำคำสั่งlet ฉันได้ยินมาว่ามันอธิบายว่าเป็นตัวแปร "ท้องถิ่น" แต่ฉันก็ยังไม่แน่ใจว่ามันจะทำงานแตกต่างจากvarคำหลักได้อย่างไร อะไรคือความแตกต่าง? ควรletใช้มากกว่าเมื่อvarใด

26
(a == 1 && a == 2 && a == 3) เคยประเมินว่าเป็นจริงหรือไม่
ต้องการปรับปรุงโพสต์นี้หรือไม่? ให้คำตอบโดยละเอียดสำหรับคำถามนี้รวมถึงการอ้างอิงและคำอธิบายว่าทำไมคำตอบของคุณถึงถูกต้อง คำตอบที่ไม่มีรายละเอียดเพียงพออาจแก้ไขหรือลบออกได้ หมายเหตุผู้ดูแล:โปรดต่อต้านการกระตุ้นให้แก้ไขรหัสหรือลบประกาศนี้ รูปแบบของพื้นที่ว่างอาจเป็นส่วนหนึ่งของคำถามดังนั้นจึงไม่ควรแก้ไขโดยไม่จำเป็น หากคุณอยู่ใน "ช่องว่างที่ไม่มีความหมาย" ค่ายคุณควรจะยอมรับรหัสตามที่เป็นอยู่ เป็นไปได้ไหมที่(a== 1 && a ==2 && a==3)จะประเมินเป็นtrueJavaScript? นี่คือคำถามสัมภาษณ์ที่ถามโดย บริษัท เทคโนโลยีรายใหญ่ มันเกิดขึ้นเมื่อสองสัปดาห์ก่อน แต่ฉันยังคงพยายามหาคำตอบ ฉันรู้ว่าเราไม่เคยเขียนรหัสดังกล่าวในงานประจำวัน แต่ฉันอยากรู้

10
การใช้ Node.js ต้องการกับการนำเข้า / ส่งออก ES6
ในโครงการที่ฉันร่วมมือกันเรามีสองตัวเลือกสำหรับระบบโมดูลที่เราสามารถใช้ได้: การนำเข้าโมดูลการใช้requireและการส่งออกโดยใช้และmodule.exportsexports.foo การนำเข้าโมดูลโดยใช้ ES6 importและการส่งออกโดยใช้ ES6export มีประโยชน์ด้านประสิทธิภาพการใช้หนึ่งมากกว่าอีก มีอะไรอีกบ้างที่เราควรรู้ถ้าเราจะใช้โมดูล ES6 เหนือโหนด

10
เมื่อใดที่ฉันควรใช้เครื่องมือจัดฟันแบบโค้งสำหรับการนำเข้า ES6
ดูเหมือนจะชัดเจน แต่ฉันพบว่าตัวเองสับสนเล็กน้อยเกี่ยวกับเวลาที่จะใช้เครื่องมือจัดฟันแบบโค้งสำหรับนำเข้าโมดูลเดียวใน ES6 ตัวอย่างเช่นในโครงการ React-Native ฉันกำลังทำงานฉันมีไฟล์และเนื้อหาดังต่อไปนี้: initialState.js var initialState = { todo: { todos: [ {id: 1, task: 'Finish Coding', completed: false}, {id: 2, task: 'Do Laundry', completed: false}, {id: 2, task: 'Shopping Groceries', completed: false}, ] } }; export default initialState; ใน TodoReducer.js ฉันต้องนำเข้าโดยไม่มีเครื่องหมายปีกกา: import initialState from './todoInitialState'; หากฉันใส่initialStateวงเล็บปีกกาเป็นหยิกฉันจะได้รับข้อผิดพลาดต่อไปนี้สำหรับรหัสบรรทัดต่อไปนี้: …

6
ฟังก์ชันลูกศร ECMAScript 6 ที่ส่งคืนวัตถุ
เมื่อส่งคืนวัตถุจากฟังก์ชันลูกศรดูเหมือนว่าจำเป็นต้องใช้ชุดพิเศษ{}และreturnคำหลักเนื่องจากความกำกวมในไวยากรณ์ ซึ่งหมายความว่าฉันไม่สามารถเขียนแต่ต้องเขียนp => {foo: "bar"}p => { return {foo: "bar"}; } ถ้าฟังก์ชันลูกศรผลตอบแทนอื่นใดนอกเหนือจากวัตถุที่{}และไม่จำเป็นเช่น:returnp => "foo" p => {foo: "bar"}undefinedผลตอบแทน แก้ไขp => {"foo": "bar"}โยน“ SyntaxError: โทเค็นไม่คาดคิด: ': '” มีบางสิ่งที่ชัดเจนว่าฉันหายไปหรือไม่?

8
"ค่าเริ่มต้นการส่งออก" ใน javascript คืออะไร
ไฟล์: SafeString.js // Build out our basic SafeString type function SafeString(string) { this.string = string; } SafeString.prototype.toString = function() { return "" + this.string; }; export default SafeString; ฉันไม่เคยเห็นexport defaultมาก่อน มีสิ่งใดที่เทียบเท่าexport defaultที่เข้าใจได้ง่ายขึ้นหรือไม่


3
'ฟังก์ชั่นลูกศร' และ 'ฟังก์ชั่น' เทียบเท่าหรือแลกเปลี่ยนได้?
ฟังก์ชั่นลูกศรใน ES2015 มีไวยากรณ์ที่กระชับยิ่งขึ้น ฉันสามารถแทนที่การประกาศ / การแสดงออกของฟังก์ชั่นทั้งหมดด้วยฟังก์ชั่นลูกศรได้หรือไม่? ฉันต้องระวังอะไร ตัวอย่าง: ฟังก์ชันตัวสร้าง function User(name) { this.name = name; } // vs const User = name => { this.name = name; }; วิธีการต้นแบบ User.prototype.getName = function() { return this.name; }; // vs User.prototype.getName = () => this.name; วิธีการวัตถุ (ตัวอักษร) const obj = { getName: …

14
ทางเลือกตัวแปรคลาส ES6
ปัจจุบันใน ES5 พวกเราหลายคนกำลังใช้รูปแบบต่อไปนี้ในกรอบงานเพื่อสร้างคลาสและตัวแปรคลาสซึ่งสะดวกสบาย: // ES 5 FrameWork.Class({ variable: 'string', variable2: true, init: function(){ }, addItem: function(){ } }); ใน ES6 คุณสามารถสร้างคลาสได้ แต่ไม่มีตัวเลือกให้มีคลาสตัวแปร: // ES6 class MyClass { const MY_CONST = 'string'; // <-- this is not possible in ES6 constructor(){ this.MY_CONST; } } น่าเสียดายที่ข้อความข้างต้นใช้งานไม่ได้เนื่องจากคลาสเท่านั้นที่สามารถมีวิธีได้ ฉันเข้าใจว่าฉันสามารถthis.myVar = trueในconstructor... แต่ฉันไม่ต้องการที่จะ 'ขยะ' คอนสตรัคของฉันโดยเฉพาะอย่างยิ่งเมื่อฉันมี …


13
ความหมายของ“ =>” (ลูกศรที่สร้างขึ้นจากค่าเท่ากับ & มากกว่า) ใน JavaScript คืออะไร
ฉันรู้ว่า>=โอเปอเรเตอร์มีความหมายมากกว่าหรือเท่ากับ แต่ฉันเห็น=>ในซอร์สโค้ดบางตัว ความหมายของผู้ประกอบการนั้นคืออะไร? นี่คือรหัส: promiseTargetFile(fpParams, aSkipPrompt, relatedURI).then(aDialogAccepted => { if (!aDialogAccepted) return; saveAsType = fpParams.saveAsType; file = fpParams.file; continueSave(); }).then(null, Components.utils.reportError);

30
คุณสมบัติส่วนตัวในคลาส JavaScript ES6
เป็นไปได้หรือไม่ที่จะสร้างคุณสมบัติส่วนตัวในคลาส ES6 นี่คือตัวอย่าง ฉันจะป้องกันการเข้าถึงได้instance.propertyอย่างไร class Something { constructor(){ this.property = "test"; } } var instance = new Something(); console.log(instance.property); //=> "test"

11
Node.js - SyntaxError: การนำเข้าโทเค็นที่ไม่คาดคิด
ฉันไม่เข้าใจสิ่งที่ผิด โหนด v5.6.0 NPM v3.10.6 รหัส: function (exports, require, module, __filename, __dirname) { import express from 'express' }; ข้อผิดพลาด: SyntaxError: Unexpected token import at exports.runInThisContext (vm.js:53:16) at Module._compile (module.js:387:25) at Object.Module._extensions..js (module.js:422:10) at Module.load (module.js:357:32) at Function.Module._load (module.js:314:12) at Function.Module.runMain (module.js:447:10) at startup (node.js:140:18) at node.js:1001:3

11
เรียก async / ฟังก์ชั่นที่รอคอยในแบบคู่ขนาน
เท่าที่ฉันเข้าใจใน ES7 / ES2016 การใส่รหัสหลายรายการawaitจะทำงานคล้ายกับการผูกมัด.then()กับสัญญาซึ่งหมายความว่าพวกเขาจะดำเนินการอย่างใดอย่างหนึ่งหลังจากที่อื่นมากกว่าใน Parallerl ตัวอย่างเช่นเรามีรหัสนี้: await someCall(); await anotherCall(); ฉันเข้าใจถูกต้องหรือไม่ว่าanotherCall()จะถูกเรียกเมื่อsomeCall()เสร็จสิ้นเท่านั้น อะไรคือวิธีที่สวยงามที่สุดในการโทรหาพวกเขาในแบบคู่ขนาน? ฉันต้องการใช้มันในโหนดดังนั้นอาจมีวิธีแก้ปัญหาด้วยไลบรารี async หรือไม่? แก้ไข: ฉันไม่พอใจกับวิธีแก้ปัญหาที่ให้ไว้ในคำถามนี้: การชะลอตัวเนื่องจากการรอคอยสัญญาแบบไม่ต่อเนื่องในเครื่องกำเนิดไฟฟ้า asyncเนื่องจากมันใช้เครื่องกำเนิดไฟฟ้าและฉันกำลังถามกรณีการใช้งานทั่วไปมากกว่า

9
เมื่อใดที่ฉันควรใช้ฟังก์ชั่นลูกศรใน ECMAScript 6
คำถามนี้ส่งตรงไปยังผู้ที่คิดเกี่ยวกับรูปแบบโค้ดในบริบทของ ECMAScript 6 (Harmony) ที่กำลังจะมาถึงและผู้ที่ได้ทำงานกับภาษานี้แล้ว ด้วย() => {}และfunction () {}เราจะได้รับสองวิธีที่คล้ายกันมากในการเขียนฟังก์ชั่นใน ES6 ในภาษาอื่น ๆ ฟังก์ชั่นแลมบ์ดามักจะแยกแยะตัวเองโดยการไม่เปิดเผยตัวตน แต่ใน ECMAScript ฟังก์ชั่นใด ๆ สามารถไม่ระบุชื่อได้ แต่ละประเภทมีโดเมนการใช้งานที่ไม่ซ้ำกัน (เช่นเมื่อthisต้องถูกผูกไว้อย่างชัดเจนหรือไม่ผูกมัดอย่างชัดเจน) ระหว่างโดเมนเหล่านั้นมีหลายกรณีที่สัญกรณ์ทั้งสองจะทำ ฟังก์ชั่นลูกศรใน ES6 มีข้อ จำกัด อย่างน้อยสองข้อ: ไม่ทำงานnewและไม่สามารถใช้งานได้เมื่อสร้างprototype แก้ไขthisขอบเขตกับขอบเขตเมื่อเริ่มต้น ข้อ จำกัด ทั้งสองนี้ข้างกันฟังก์ชั่นลูกศรในทางทฤษฎีสามารถแทนที่ฟังก์ชั่นปกติได้เกือบทุกที่ วิธีการที่ถูกต้องใช้พวกเขาในทางปฏิบัติคืออะไร? ควรใช้ฟังก์ชันลูกศรเช่น: "ทุกที่ที่ทำงาน" คือทุกที่ที่ฟังก์ชั่นไม่จำเป็นต้องไม่เชื่อเรื่องพระเจ้าthisและเราไม่ได้สร้างวัตถุ มีเพียง "ทุกที่ที่ต้องการ" เช่นผู้ฟังเหตุการณ์, หมดเวลา, ที่ต้องเชื่อมโยงกับขอบเขตที่แน่นอน ด้วยฟังก์ชั่น 'สั้น' แต่ไม่ได้มีฟังก์ชั่น 'ยาว' เฉพาะกับฟังก์ชั่นที่ไม่มีฟังก์ชั่นลูกศรอื่น สิ่งที่ฉันกำลังมองหาเป็นแนวทางในการเลือกสัญกรณ์ฟังก์ชั่นที่เหมาะสมในรุ่นอนาคตของ ECMAScript คำแนะนำจะต้องมีความชัดเจนเพื่อให้สามารถสอนให้นักพัฒนาในทีมได้และต้องสอดคล้องกันเพื่อที่จะได้ไม่ต้องทำการปรับโครงสร้างไปมาอย่างต่อเนื่องจากสัญกรณ์หนึ่งไปยังอีกฟังก์ชันหนึ่ง

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