Tôi đã đọc tất cả các nơi mà global variables are bad và lựa chọn thay thế nên được sử dụng. Trong Javascript, tôi nên chọn giải pháp nào.Tôi đã nghe các Biến Toàn cầu Xấu, Tôi nên sử dụng giải pháp thay thế nào?
Tôi đang nghĩ đến việc một chức năng, mà khi ăn hai đối số (function globalVariables(Variable,Value)
) trông nếu biến tồn tại trong một mảng địa phương và nếu nó không thiết lập giá trị của nó để Value
, khác, Variable
và Value
được nối. Nếu hàm được gọi mà không có đối số (function globalVariables()
), nó sẽ trả về mảng. Có lẽ nếu hàm được kích hoạt chỉ với một đối số (function globalVariables(Variable)
), hàm này trả về giá trị Variable
trong mảng.
Bạn nghĩ sao? Tôi muốn nghe các giải pháp thay thế và các đối số của bạn để sử dụng các biến toàn cục.
Làm thế nào bạn sẽ sử dụng globalVariables();
function append(){
globalVariables("variable1","value1"); //globalVariables() would append variable1 to it's local array.
};
function retrieve(){
var localVariable1 = globalVariables("variable1"); //globalVariables() would return "value1".
};
function retrieveAll(){
var localVariable1 = globalVariables(); //globalVariables() would return the globalVariable()'s entire, local [persistently stored between calls] array.
};
function set(){
globalVariables("variable1","value2"); //globalVariables() would set variable1 to "value2".
};
Đây có phải là một Singleton Pattern BTW?
Trong trường hợp cụ thể này, hàm có thể đặt biến tại một thời điểm và sau đó một hàm khác, có thể khi người dùng gửi biểu mẫu, sẽ cần nhận biến đó. Do đó, hàm đầu tiên không thể truyền biến đó làm đối số cho hàm sau vì nó sẽ không bao giờ được gọi từ hàm đầu tiên.
Cảm ơn bạn, tôi đánh giá cao sự giúp đỡ của bạn!
Tôi không nghĩ rằng bạn hoàn toàn hiểu tại sao họ xấu – Yacoby
@ Yacoby: Tôi nghĩ tôi làm [câu trả lời của Lee giải thích rất nhiều] nhưng nếu bạn cảm thấy khác thì hãy xây dựng. Tôi nên sử dụng giải pháp nào trong kịch bản này? –
Tôi phải đồng ý với @Yacoby tại đây. Bạn đang loại phát minh lại các biến toàn cầu trong ví dụ của bạn, do đó đưa bạn trở lại bước một của "biến toàn cầu là xấu". – Patrick