คำถามติดแท็ก arrow-functions

คำถามเกี่ยวกับไวยากรณ์ของฟังก์ชันแบบกระชับใน ECMAScript2015 (ES6) ที่เรียกว่า "ฟังก์ชันลูกศร" เนื่องจากมีการใช้ "=>"

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

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: …

6
ไวยากรณ์สำหรับฟังก์ชั่นลูกศร async
ฉันสามารถทำเครื่องหมายฟังก์ชันจาวาสคริปต์เป็น "async" (เช่นคืนสัญญา) ด้วยasyncคำหลัก แบบนี้: async function foo() { // do something } ไวยากรณ์เทียบเท่าสำหรับฟังก์ชั่นลูกศรคืออะไร


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

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

7
ฉันสามารถใช้ไวยากรณ์ฟังก์ชั่นลูกศรของ ES6 กับเครื่องกำเนิดไฟฟ้าได้หรือไม่? (เครื่องหมายลูกศร)
ฉันจะอธิบายสิ่งนี้อย่างไร: function *(next) {} ด้วยลูกศร ฉันลองชุดค่าผสมทั้งหมดที่ฉันสามารถนึกได้และไม่พบเอกสารใด ๆ (ปัจจุบันใช้โหนด v0.11.14)

8
ฉันจะเขียนฟังก์ชัน arrow ที่มีชื่อใน ES2015 ได้อย่างไร
ฉันมีฟังก์ชั่นที่ฉันพยายามที่จะแปลงไวยากรณ์ลูกศรใหม่ในES6 มันเป็นฟังก์ชั่นที่มีชื่อ: function sayHello(name) { console.log(name + ' says hello'); } มีวิธีให้ชื่อโดยไม่มีคำสั่ง var: var sayHello = (name) => { console.log(name + ' says hello'); } เห็นได้ชัดว่าฉันสามารถใช้ฟังก์ชั่นนี้หลังจากที่ฉันได้กำหนดไว้เท่านั้น สิ่งต่อไปนี้: sayHello = (name) => { console.log(name + ' says hello'); } มีวิธีการใหม่ในES6หรือไม่?

5
เมื่อใดที่ฉันควรใช้ `return 'ในฟังก์ชั่นลูกศร es6
ฟังก์ชั่นลูกศร es6ใหม่บอกreturnเป็นนัยภายใต้สถานการณ์บางอย่าง: นิพจน์เป็นค่าส่งคืนโดยนัยของฟังก์ชันนั้น ฉันจำเป็นต้องใช้returnกับฟังก์ชั่นลูกศร es6 ในกรณีใดบ้าง

4
ES6 เรียกใช้ฟังก์ชันลูกศรทันที
เหตุใดจึงทำงานในNode.jsคอนโซล (ทดสอบใน 4.1.1 และ 5.3.0) แต่ไม่ทำงานในเบราว์เซอร์ (ทดสอบใน Chrome) Okการป้องกันรหัสนี้ควรสร้างและเรียกใช้ฟังก์ชั่นที่ไม่ระบุชื่อที่บันทึก () => { console.log('Ok'); }() นอกจากนี้ในขณะที่การทำงานข้างต้นในโหนดนี้ไม่ทำงาน: n => { console.log('Ok'); }() หรือสิ่งนี้: (n) => { console.log('Ok'); }() มีอะไรแปลก ๆ คือเมื่อเพิ่มพารามิเตอร์แล้วมันจะส่ง a ไปSyntaxErrorที่ส่วนที่เรียกใช้ทันที

4
CoffeeScript เมื่อใดควรใช้ลูกศรอ้วน (=>) เหนือลูกศร (->) และในทางกลับกัน
เมื่อสร้างคลาสใน CoffeeScript ควรกำหนดวิธีการอินสแตนซ์ทั้งหมดโดยใช้ตัวดำเนินการ=>("fat arrow") และวิธีการแบบคงที่ทั้งหมดที่กำหนดโดยใช้ตัว->ดำเนินการหรือไม่

5
การใช้ jQuery $ (this) กับ ES6 Arrow Functions (คำศัพท์การผูกนี้)
การใช้ฟังก์ชันลูกศร ES6 กับการthisผูกศัพท์นั้นยอดเยี่ยมมาก อย่างไรก็ตามฉันพบปัญหาเมื่อสักครู่ที่ผ่านมาโดยใช้กับการเชื่อมโยงการคลิก jQuery ทั่วไป: class Game { foo() { self = this; this._pads.on('click', function() { if (self.go) { $(this).addClass('active'); } }); } } ใช้ฟังก์ชันลูกศรแทน: class Game { foo() { this._pads.on('click', () => { if (this.go) { $(this).addClass('active'); } }); } } จากนั้น$(this)จะถูกแปลงเป็น ES5 (self = this) type closed …

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()); }

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

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