Hướng dẫn return multiple values javascript - trả về nhiều giá trị javascript
Đã hỏi 12 năm, 5 tháng trước 12 years, 5 months ago Đã xem 1,1 triệu lần 1.1m times Tôi đang cố gắng trả về hai giá trị trong JavaScript. Điều này có thể?JavaScript. Is this possible?
Khi được hỏi ngày 26 tháng 5 năm 2010 lúc 22:06May 26, 2010 at 22:06
Asim Zaidiasim ZaidiAsim Zaidi 26K48 Huy hiệu vàng130 Huy hiệu bạc219 Huy hiệu Đồng48 gold badges130 silver badges219 bronze badges 5 Không, nhưng bạn có thể trả về một mảng chứa các giá trị của bạn:
Sau đó, bạn có thể truy cập chúng như vậy:
Với cú pháp Ecmascript 6 mới nhất*, bạn cũng có thể phá hủy giá trị trả về trực quan hơn:
Nếu bạn muốn đặt "nhãn" trên mỗi giá trị được trả về (dễ bảo trì hơn), bạn có thể trả về một đối tượng:
Và để truy cập chúng:
Hoặc với cú pháp ES6:
* Xem bảng này để biết khả năng tương thích trình duyệt. Về cơ bản, tất cả các trình duyệt hiện đại ngoài IE hỗ trợ cú pháp này, nhưng bạn có thể biên dịch mã ES6 xuống JavaScript tương thích IE tại thời điểm xây dựng với các công cụ như Babel.
User229044 ♦♦ 227K40 Huy hiệu vàng327 Huy hiệu bạc335 Huy hiệu Đồng40 gold badges327 silver badges335 bronze badges Đã trả lời ngày 26 tháng 5 năm 2010 lúc 22:09May 26, 2010 at 22:09
Sasha Chedygovsasha ChedygovSasha Chedygov 125K26 Huy hiệu vàng101 Huy hiệu bạc115 Huy hiệu đồng26 gold badges101 silver badges115 bronze badges 5
Bạn có thể làm điều này từ Ecmascript 6 trở đi bằng các mảng và "bài tập phá hủy". Lưu ý rằng chúng không có sẵn trong các phiên bản JavaScript cũ hơn (có nghĩa là - không phải với ECMAScript thứ 3 và phiên bản thứ 5). Nó cho phép bạn gán cho 1+ biến đồng thời:
Bạn cũng có thể sử dụng phá hủy đối tượng kết hợp với giá trị tài sản để đặt tên cho các giá trị trả về trong một đối tượng và chọn ra các giá trị bạn muốn:
Và nhân tiện, đừng bị lừa bởi thực tế là Ecmascript cho phép bạn 7. Những gì thực sự xảy ra không có những gì có vẻ. Một biểu thức trong tuyên bố trả lại - 8 - không là gì ngoài một nhà điều hành dấu phẩy được áp dụng cho các chữ số ( 9, 0 và 1) tuần tự, cuối cùng đánh giá theo giá trị của biểu thức cuối cùng của nó - 1. Đó là lý do tại sao 3 có chức năng giống hệt với không có gì khác ngoài 4.
Fzs 15.5K12 Huy hiệu vàng41 Huy hiệu bạc47 Huy hiệu đồng12 gold badges41 silver badges47 bronze badges Đã trả lời ngày 26 tháng 5 năm 2010 lúc 23:09May 26, 2010 at 23:09
5 Chỉ cần trả lại một đối tượng theo nghĩa đen 0Đã trả lời ngày 26 tháng 5 năm 2010 lúc 22:11May 26, 2010 at 22:11
Sean Kinsean KinseySean Kinsey 37.2K7 Huy hiệu vàng51 Huy hiệu bạc71 Huy hiệu đồng7 gold badges51 silver badges71 bronze badges 2 Vì es6 bạn có thể làm điều này 1Biểu thức trả về 5 là tốc ký giá trị thuộc tính và tương đương với 6 này.property value shorthand and is equivalent to this 6.Nhiệm vụ này trên dòng cuối cùng được gọi là phân công phá hủy đối tượng. Nó trích xuất giá trị thuộc tính của một đối tượng và gán nó cho biến cùng tên. Nếu bạn muốn gán các giá trị trả về cho các biến của tên khác nhau, bạn có thể làm như thế này 7object destructing assignment. It extracts property value of an object and assigns it to variable of same name. If you'd like to assign return
values to variables of different name you could do it like this 7Đã trả lời ngày 1 tháng 3 năm 2018 lúc 13:59Mar 1, 2018 at 13:59
PeraceKperacekPeracek 1.65114 Huy hiệu bạc17 Huy hiệu đồng14 silver badges17 bronze badges Ecmascript 6 bao gồm "các nhiệm vụ phá hủy" (như Kangax đã đề cập) vì vậy trong tất cả các trình duyệt (không chỉ Firefox), bạn sẽ có thể nắm bắt được một loạt các giá trị mà không phải tạo một mảng hoặc đối tượng được đặt tên cho mục đích duy nhất là nắm bắt chúng. 2Bạn có thể dùng thử trong Firefox rồi! Đã trả lời ngày 10 tháng 12 năm 2013 lúc 6:51Dec 10, 2013 at 6:51
user3015682user3015682user3015682 1.18711 Huy hiệu bạc13 Huy hiệu đồng11 silver badges13 bronze badges 0 Một giá trị khác để đề cập đến cú pháp mới được giới thiệu (ES6) là sử dụng tốc ký tạo đối tượng ngoài việc chuyển nhượng phá hủy. 3Cú pháp này có thể được hoàn thành bằng babel hoặc các polyfiller JS khác cho các trình duyệt cũ hơn nhưng may mắn hiện nay hoạt động tự nhiên với các phiên bản gần đây của Chrome và Firefox. Nhưng khi tạo ra một đối tượng mới, phân bổ bộ nhớ (và tải GC cuối cùng) có liên quan ở đây, đừng mong đợi nhiều hiệu suất từ nó. JavaScript không phải là ngôn ngữ tốt nhất để phát triển những thứ tối ưu cao nhưng nếu điều đó là cần thiết, bạn có thể xem xét đưa kết quả của mình lên đối tượng xung quanh hoặc các kỹ thuật như vậy thường là các thủ thuật hiệu suất phổ biến giữa JavaScript, Java và các ngôn ngữ khác. Đã trả lời ngày 1 tháng 10 năm 2016 lúc 7:12Oct 1, 2016 at 7:12
Ebrahim Byagowiebrahim ByagowiEbrahim Byagowi 9.6284 Huy hiệu vàng67 Huy hiệu bạc77 Huy hiệu đồng4 gold badges67 silver badges77 bronze badges 2 4Sau đó sử dụng 5Trong phiên bản mới: 6Đã trả lời ngày 8 tháng 9 năm 2014 lúc 8:38Sep 8, 2014 at 8:38
BehnambehnamBehnam 6,00438 Huy hiệu bạc35 Huy hiệu Đồng38 silver badges35 bronze badges 3 Một cách rất phổ biến để trả về nhiều giá trị trong JavaScript là sử dụng một nghĩa đen đối tượng, vì vậy một cái gì đó như:return multiple values in javascript is using an object literals, so something like: 7và nhận được các giá trị như thế này: 8hoặc thậm chí là một cách ngắn hơn: 9và lấy chúng cá nhân như: 0Đã trả lời ngày 15 tháng 8 năm 2019 lúc 15:32Aug 15, 2019 at 15:32
AlirezaalirezaAlireza 96.6K26 Huy hiệu vàng265 Huy hiệu bạc169 Huy hiệu đồng26 gold badges265 silver badges169 bronze badges Khác với việc trả lại một mảng hoặc một đối tượng như những người khác đã đề xuất, bạn cũng có thể sử dụng hàm thu thập (tương tự như được tìm thấy trong sơ đồ nhỏ): 1Tôi đã thực hiện một bài kiểm tra JSPERF để xem một trong ba phương pháp nào nhanh hơn. Mảng là nhanh nhất và người thu gom chậm nhất. http://jsperf.com/returning-multiple-values-2 Đã trả lời ngày 24 tháng 8 năm 2014 lúc 17:15Aug 24, 2014 at 17:15
ZelenovazelenovaZelenova 2663 Huy hiệu bạc7 Huy hiệu đồng3 silver badges7 bronze badges 1 Trong JS, chúng ta có thể dễ dàng trả lại một tuple bằng một mảng hoặc đối tượng, nhưng đừng quên! => JS là ngôn ngữ định hướng 8 và có một bí mật nhỏ ở đây để "trả lại nhiều giá trị" mà chưa có ai đề cập, hãy thử điều này:
trở thành 3:) Bam! Đây chỉ đơn giản là một cách khác để giải quyết vấn đề của bạn. Đã trả lời ngày 27 tháng 1 năm 2017 lúc 5:08Jan 27, 2017 at 5:08
Alexander Millsalexander MillsAlexander Mills 83.5K123 Huy hiệu vàng436 Huy hiệu bạc770 Huy hiệu đồng123 gold badges436 silver badges770 bronze badges Bạn cũng có thể làm: 4Đã trả lời ngày 5 tháng 6 năm 2016 lúc 17:37Jun 5, 2016 at 17:37
Joris Mansjoris MansJoris Mans 5,8696 Huy hiệu vàng40 Huy hiệu bạc64 Huy hiệu đồng6 gold badges40 silver badges64 bronze badges 0
Thêm các phần quan trọng còn thiếu để làm cho câu hỏi này trở thành một nguồn tài nguyên hoàn chỉnh, vì điều này xuất hiện trong kết quả tìm kiếm. Đối tượng phá hủy Trong phá hủy đối tượng, bạn không nhất thiết phải sử dụng cùng một giá trị khóa với tên biến của mình, bạn có thể gán một tên biến khác bằng cách xác định nó như dưới đây: 5Mảng phá hủy Trong phá hủy mảng, bạn có thể bỏ qua các giá trị bạn không cần. 6Điều đáng chú ý là 9 phải luôn luôn ở cuối vì nó không có ý nghĩa gì khi phá hủy bất cứ điều gì sau khi mọi thứ khác được tổng hợp thành 0.Tôi hy vọng điều này sẽ thêm một số giá trị cho câu hỏi này :) Đã trả lời ngày 25 tháng 6 năm 2019 lúc 6:16Jun 25, 2019 at 6:16
Nimeshka Srimalnimeshka SrimalNimeshka Srimal 7.3445 Huy hiệu vàng43 Huy hiệu bạc56 Huy hiệu Đồng5 gold badges43 silver badges56 bronze badges Bạn có thể sử dụng "đối tượng" 7Đã trả lời ngày 27 tháng 10 năm 2017 lúc 16:44Oct 27, 2017 at 16:44
bã nhờnsebu 2.6541 Huy hiệu vàng25 Huy hiệu bạc42 Huy hiệu đồng1 gold badge25 silver badges42 bronze badges 1 Tất cả đều đúng. 1 Các quy trình logic từ trái sang phải và trả về giá trị cuối cùng. 8Đã trả lời ngày 21 tháng 12 năm 2017 lúc 8:13Dec 21, 2017 at 8:13
1 Tôi sẽ đề nghị sử dụng nhiệm vụ phá hủy mới nhất (nhưng đảm bảo nó được hỗ trợ trong môi trường của bạn)destructuring assignment (But make sure it's supported in your environment) 9Đã trả lời ngày 19 tháng 7 năm 2018 lúc 7:23Jul 19, 2018 at 7:23
AmtourkyamtourkyAMTourky 1.18013 Huy hiệu bạc25 Huy hiệu đồng13 silver badges25 bronze badges Tôi biết hai cách để làm điều này: 1. Trả về Array 2. Trả về đối tượng Đây là một ví dụ tôi tìm thấy: 0Đã trả lời ngày 4 tháng 4 năm 2019 lúc 14:01Apr 4, 2019 at 14:01
Kallol Medhikallol MedhiKallol Medhi 3751 Huy hiệu vàng3 Huy hiệu bạc15 Huy hiệu đồng1 gold badge3 silver badges15 bronze badges Vài ngày trước, tôi có yêu cầu tương tự để nhận được nhiều giá trị trả về từ một hàm mà tôi đã tạo. Từ nhiều giá trị trả về, tôi cần nó chỉ trả về giá trị cụ thể cho một điều kiện nhất định và sau đó giá trị trả về khác tương ứng với điều kiện khác. Đây là ví dụ về cách tôi đã làm điều đó: Function: 1Nhận được giá trị trả về yêu cầu từ đối tượng được trả về bởi chức năng: 2Toàn bộ quan điểm của việc trả lời câu hỏi này là chia sẻ phương pháp này để có được ngày ở định dạng tốt. Hy vọng nó đã giúp bạn :) Đã trả lời ngày 16 tháng 7 năm 2018 lúc 10:53Jul 16, 2018 at 10:53
Krupesh Anadkatkrupesh Anadkatkrupesh Anadkat 1.6121 Huy hiệu vàng17 Huy hiệu bạc28 Huy hiệu đồng1 gold badge17 silver badges28 bronze badges Tôi không có gì thêm mới ở đây nhưng một cách khác. 3
Nick 134K22 Huy hiệu vàng51 Huy hiệu bạc89 Huy hiệu đồng22 gold badges51 silver badges89 bronze badges Đã trả lời ngày 20 tháng 12 năm 2018 lúc 5:25Dec 20, 2018 at 5:25
Kumarkumarkumar Phù hiệu bằng đồng 1144 bronze badges Vâng, chúng tôi không thể chính xác làm những gì bạn cố gắng. Nhưng một cái gì đó có thể dưới đây có thể được thực hiện. 4Sau đó, khi gọi phương thức 5Đã trả lời ngày 27 tháng 6 năm 2019 lúc 6:48Jun 27, 2019 at 6:48
AnjanaanjanaAnjana 8931 Huy hiệu vàng5 Huy hiệu bạc13 Huy hiệu đồng1 gold badge5 silver badges13 bronze badges Có thể trả về một chuỗi với nhiều giá trị và biến bằng cách sử dụng các chữ cái theo nghĩa đen `$ {}` like: 6Nó ngắn và đơn giản.
David Buck 3.60933 Huy hiệu vàng31 Huy hiệu bạc35 Huy hiệu Đồng33 gold badges31 silver badges35 bronze badges Đã trả lời ngày 19 tháng 8 năm 2020 lúc 9:15Aug 19, 2020 at 9:15
|