2010-08-25 38 views
9

thể trùng lặp:
Determine original name of variable after its passed to a function.Lấy 'name' của một biến trong Javascript

Tôi muốn biết nếu nó có thể để có được tên thực tế của một biến.

Ví dụ:

var foo = 'bar'; 
function getName(myvar) { 
    //some code 
    return "foo" 
}; 

Vì vậy, đối getName (foo) sẽ trở lại "foo"

Là có thể?

Cảm ơn.

+2

lý do tại sao bạn sẽ được quan tâm đến tên biến? Thay vì logic của bạn trong các chức năng nên phụ thuộc vào các giá trị biến phải không? –

+0

Tôi thấy mã này cực kỳ kỳ lạ. Tôi tự hỏi bạn đang cố gắng làm gì? –

+0

May mắn là điều này là không thể trong JavaScript, nếu không bạn sẽ kết thúc với một cái gì đó khủng khiếp như thế này ... http://stackoverflow.com/questions/2749796/how-to-get-the-original-variable-name- of-variable-passed-to-a-function/2749857 # 2749857 –

Trả lời

4

Tôi không nghĩ điều đó là có thể. Khi bạn gọi một hàm bạn truyền một đối tượng, không phải là một biến. Hàm không quan tâm đến đối tượng đến từ đâu.

Bạn có thể đi theo con đường khác mặc dù nếu bạn gọi chức năng của bạn như sau:

getName('foo') 

Hoặc vượt qua cả giá trị và tên:

getName(foo, 'foo') 
+0

Chỉ cần một bình luận, tại sao tôi sẽ vượt qua một giá trị chuỗi harcoded 'foo' khi tôi biết tôi sẽ nhận được nó như là giá trị trả lại? –

+0

@Sachin Shanbhag: Làm thế nào chính xác bạn sẽ nhận được nó như là một giá trị trả lại nếu bạn không vượt qua nó trong như một tham số? Bạn đang giả định rằng những gì OP được yêu cầu là có thể. Có lẽ nó là ... nhưng tôi muốn * thực sự * muốn thấy một số bằng chứng về điều đó xin vui lòng. –

+0

Tôi hoàn toàn đồng ý với bạn. Đây là một trong những cách có thể để nhận được những gì cần thiết, nhưng từ quan điểm lập trình, nếu tôi đang sử dụng giá trị trả về đó cho các hoạt động tiếp theo, tôi đã biết giá trị đó trước khi chuyển nó thành hàm và không cần đợi giá trị trả về. Không có hành vi phạm tội, nhưng tôi thực sự giả định nhận được tên biến không phải là posisble vì nó không giúp đỡ trong lập trình. –

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