2015-09-30 13 views
5

tl; dr: => làm gì?=> có nghĩa là gì trong JavaScript? (bằng lớn hơn)

Tôi vừa mới hoàn thành giải quyết vấn đề trên codewars và sau khi xem xét phản ứng thông thường của những người khác cho vấn đề, tôi cứ nhìn thấy điều này: =>

Vấn đề là dưới đây:

Bạn có một rung động mũi tên, nhưng một số đã bị hỏng. Bộ rung chứa các mũi tên có thông tin phạm vi tùy chọn (các loại mục tiêu khác nhau được đặt ở các phạm vi khác nhau), vì vậy mỗi mục là một mũi tên. Bạn cần xác minh rằng bạn còn một số thứ tốt để chuẩn bị cho trận chiến. Dưới đây là một ví dụ mảng là rung động của các mũi tên.

anyArrows([ 
{range: 5}, 
{range: 10, damaged: true}, 
{damaged: true} 
]) 

Nếu mũi tên trong bộ rung không có trạng thái bị hỏng, điều đó có nghĩa là mới.

Đây là một ví dụ tôi thấy mà trả về true hoặc false, tùy thuộc vào nếu có một mũi tên không bị hư hại trong rung:

function anyArrows(arrows){ 
    return arrows.some(a => !a.damaged); 
} 

Bây giờ, đó là cách ngắn hơn so với mã của tôi! Mine đã được rất nhiều cơ bản hơn:

function anyArrows(arrows){ 
    for (var i = 0 ; i < arrows.length ; i++){ 
    if (arrows[i].damaged === false) { return true; } 
    else if (arrows[i].damaged === true) { return false; } 
    else if (arrows[i].range === 0) { return false } 
    else { return true; } 
    } 
    if (arrows.length === 0) return false; 
} 

Một lần nữa, mặc dù câu hỏi là: những gì => làm trong trường hợp này và nói chung?

+1

[chức năng mũi tên] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions)? –

+0

Đây là cú pháp hàm ngắn mới trong ES6. Ví dụ. 'function (x) {return x.Id;}' trở thành 'x => x.Id'. Nó tương tự như các biểu thức lambda trong C#. –

+0

Điều đó đối với tôi có vẻ giống như một truy vấn LINQ, về cơ bản những gì họ đang làm là, trả về mũi tên trong đó 'a // là một đối tượng từ mũi tên' là'! Bị hỏng'. Hãy xem https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/some này – Canvas

Trả lời

8

=> là cú pháp ES2015 tách các tham số chức năng mũi tên khỏi nội dung, ví dụ: (params) => { /* body */ }.

ArrowFunction : ArrowParameters => ConciseBody