2012-04-19 36 views
11

Trong python, để trả lại nhiều biến, tôi có thể làm -Trả lại nhiều biến từ một hàm JavaScript?

def function_one(i): 
    return int(i), int(i) * 2 

value, duble_value = function_one(1) 

Làm thế nào tôi có thể đạt được kết quả này tương tự sử dụng javascript nếu chức năng chỉ có thể trả về một giá trị trả về không? (Tôi giả sử sử dụng một mảng?)

+1

Về mặt kỹ thuật bạn đang trở về một * tuple * với hai lĩnh vực trong đó, mà vẫn là một giá trị duy nhất. Tôi không quen với Javascript, nhưng nếu có một số loại mảng hoặc cấu trúc có thể được sử dụng, thì đó sẽ là lý tưởng. – Makoto

+3

Nếu hai số nguyên bạn đang trả về là số nguyên tố, bạn có thể trả lại sản phẩm của chúng. : P –

+1

Nhận xét của Makoto là một bình luận rất hay. ** Python cũng chỉ có thể trả về * một giá trị *. ** JavaScript không có loại 'tuple' để các Đối tượng (ví dụ:' dict') hoặc Mảng (ví dụ: 'danh sách') có thể được sử dụng để thay thế. Ngoài ra, JavaScript không có giải nén trình tự (làm cho 'x, y = tuple' có thể trong Python) nên việc phân tách phải được thực hiện từ lâu. –

Trả lời

30

Bạn cần sử dụng mảng hoặc đối tượng.

Ví dụ:

function test() { 
    return {foo: "bar", baz: "bof"}; 
} 

function test2() { 
    return ["bar", "bof"]; 
} 

var data = test(); 
foo = data.foo; 
baz = data.baz; 

data = test2(); 
foo = data[0]; 
baz = data[1]; 
+0

Một tùy chọn khác (nhưng không tốt): 'kiểm tra hàm (ret) {ret.a = 42; ret.b = 43; } ' –

+1

@AtesGoral Điều đó sẽ không hoạt động khi loại" không đối tượng "được chuyển vào (và sẽ là một ngoại lệ khó chịu nếu không có tham số nào được cung cấp). Nó cũng khiến tôi muốn nôn một chút. –

+0

@pst Điều này giả định ai đó cố ý vượt qua một đối tượng. Phương thức này có các cách sử dụng của nó, đặc biệt khi bạn thu thập một tập hợp các tham số vào cùng một nhóm (đối tượng) từ nhiều nguồn. –

-1
function foo(){ 
    return ["something","something else","something more","something further"]; 
} 

let [a,b,c,d] = foo(); 
+1

Khi đoạn mã này có thể giải quyết được câu hỏi, [bao gồm cả giải thích] (http: //meta.stackexchange. com/questions/114762/giải thích toàn bộ mã dựa trên câu trả lời) thực sự giúp cải thiện chất lượng bài đăng của bạn. Hãy nhớ rằng bạn đang trả lời câu hỏi cho người đọc trong tương lai và những người đó có thể không biết lý do cho đề xuất mã của bạn. –

Các vấn đề liên quan