Seperti disebutkan di atas, ada masalah dengan penggunaan cakupan paling atas di file skrip Anda. Berikut adalah masalah lain: File skrip mungkin dijalankan dari konteks yang bukan konteks global di beberapa lingkungan run-time.
Telah diusulkan untuk menetapkan global untuk window
secara langsung. Tetapi itu juga bergantung pada waktu berjalan dan tidak berfungsi di Node, dll. Ini menunjukkan bahwa manajemen variabel global portabel memerlukan pertimbangan yang cermat dan upaya ekstra. Mungkin mereka akan memperbaikinya di versi ECMS mendatang!
Untuk saat ini, saya akan merekomendasikan sesuatu seperti ini untuk mendukung manajemen global yang tepat untuk semua lingkungan run-time:
var exportGlobal = function(name, object) {
if (typeof(global) !== "undefined") {
global[name] = object;
}
else if (typeof(window) !== "undefined") {
window[name] = object;
}
else {
throw new Error("Unkown run-time environment. Currently only browsers and Node.js are supported.");
}
};
exportGlobal("exportGlobal", exportGlobal);
exportGlobal("someothernamespace", {});
Ini sedikit lebih mengetik, tetapi itu membuat manajemen variabel global Anda tahan di masa depan.
Penafian: Sebagian dari ide ini datang kepada saya saat melihat versi stacktrace.js sebelumnya .
Saya rasa, seseorang juga dapat menggunakan Webpack atau alat lain untuk mendapatkan deteksi lingkungan run-time yang lebih andal dan mengurangi peretasan.