2011-08-25 27 views
13

Sự khác biệt giữa:Khi nào sử dụng trở lại và điều gì sẽ xảy ra với dữ liệu trả về?

function bla1(x){console.log(x)} 

function bla(x){return console.log(x)} 

Trong trường hợp nào tôi nên sử dụng return?

cũng có, khi một giá trị được trả về từ một hàm, điều gì sẽ xảy ra với nó? nó được lưu trữ ở đâu đó?

+0

Nói chung, nếu bạn trả về một giá trị từ một hàm bạn cần gán nó cho một biến/đối tượng tương thích trong người gọi. –

Trả lời

17

sự khác biệt

Chức năng đầu tiên trả undefined (vì nó không return bất cứ điều gì một cách rõ ràng) là gì, thứ hai một trả về bất kỳ console.log lợi nhuận.

Trong trường hợp nào tôi nên sử dụng trở lại?

Khi chức năng tạo ra một số giá trị và bạn muốn chuyển lại cho người gọi. Lấy ví dụ Math.pow. Phải mất hai đối số, căn cứ và số mũ và trả về căn cứ được đưa ra cho số mũ.

Khi giá trị được trả về từ hàm, điều gì sẽ xảy ra với hàm? nó được lưu trữ ở đâu đó?

Nếu bạn muốn để lưu trữ các giá trị trả về, sau đó bạn phải gán nó vào một biến

var value = someFunction(); 

này lưu trữ các giá trị trở lại của someFunction trong value. Nếu bạn gọi hàm mà không gán giá trị trả về, thì giá trị chỉ là âm thầm giảm:

someFunction(); 

Đây là những chương trình cơ bản và không chỉ liên quan đến JavaScript. Bạn nên tìm một cuốn sách giới thiệu những điều cơ bản này và đặc biệt cho JavaScript, tôi khuyên bạn nên đọc MDN JavaScript Guide. Có lẽ bài viết Wikipedia về Functions cũng hữu ích.

+0

Cảm ơn câu trả lời này. Đẹp trả lời và thẳng vào vấn đề. Nó làm cho tôi cuối cùng cũng hiểu việc sử dụng một sự trở lại và những gì xảy ra với giá trị trả về đó. Tôi luôn tự hỏi điều gì đã xảy ra với giá trị trả về. –

4

Trả về một hàm là cách để trả về dữ liệu từ hàm.

Ví dụ:

function test(){ 
    var test = 1+1; 
    return test; 
} 

var feedback = test(); //feedback would now contain the value 2 if outputted. 

Chúng tôi cũng có thể gửi một biến vào chức năng và sau đó trở về nó lại ra.

Ví dụ 2:

function test(i){ 
    i= i+1; 
    return i; 
} 

var feedback = test(1); //feedback would also output the value 2. 
0

Như bạn đã đề cập, trả lại cho bạn khả năng để gọi một chức năng và lưu giá trị trả về của nó.

Dưới đây là một ví dụ nhỏ:

function bla(x) { return "blablabla"; } 

Nếu tôi gọi là phương pháp tôi sẽ nhận được một chuỗi với blablabla:

var blastring = bla(x); 
alert(blastring); 

này sẽ cho kết quả trong một cảnh báo với blablabla.

0

Với return bạn chỉ định giá trị của function là gì. Bạn có thể sử dụng giá trị này để thực hiện các thao tác khác hoặc lưu trữ nó thành một biến và cứ như vậy.

Kể từ console.logreturn s undefined, các ví dụ trong câu hỏi của bạn là tương đương, dưới dạng function không đạt được tuyên bố trả về cũng sẽ trả về undefined. Nhưng hãy để tôi cung cấp cho bạn một ví dụ:

function sum(arr) { 
    var s = 0; 
    for (var index in arr) { 
     s += arr[index]; 
    } 
    return s; 
} 

function prodsum(arr, scalar) { 
    return scalar * sum(arr); 
} 

console.log(prodsum([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 3)); 

Kết quả sẽ là 165. Nếu chúng ta loại bỏ các return s, sau đó cả hai function s sẽ returnundefined:

function sum(arr) { 
    var s = 0; 
    for (var index in arr) { 
     s += arr[index]; 
    } 
    s; 
} 

function prodsum(arr, scalar) { 
    scalar * sum(arr); 
} 

console.log(prodsum([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 3)); 

và kết quả sẽ là như undefined tốt. Về cơ bản, nếu bạn muốn function để có kết luận hoặc giá trị cuối cùng, thì bạn có một return trong đó.

0

Nếu bạn chỉ cần thêm return; vào hàm. Nó dừng việc thực thi hàm.

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