像Underscore.js和LoDash.js JS庫提供的功能,通常是通過一個全局對象_
:全局命名空間中的JavaScript庫函數 - 缺點?
_.map(...);
_.filter(...);
這種基本功能是在Python全局函數和標準庫的一部分:
map(...)
filter(...)
如果我將圖書館功能提升爲全球功能...
window.map = _.map;
window.filter = _.filter;
map(...);
filter(...);
...會有什麼缺點? (除全局命名空間污染)?
我是否期待任何性能問題?
它會導致某些瀏覽器出錯嗎? (例如,如果內置的JS函數被庫函數覆蓋,而庫函數又依賴於本機函數)
鏈接是否仍然有效?
爲什麼選擇全球?如果* *你明確地導入它們,那麼將函數導入到局部變量中。 – Bergi 2014-11-02 18:24:39
我發現它更方便,而不必爲基本函數輸入'_.',尤其是在我的Python背景下(加上我是代碼美學)。人們也可以反過來爭辯,爲什麼要擁有全球功能。像alert()這樣的函數應該只能通過'window.alert()'等等。一個很好的答案,爲什麼你想要某些東西是全球性的/短的在這個談話中給出:https://www.youtube.com/watch?v=o9pEzgHorH0 – CoDEmanX 2014-11-02 18:48:54
是的,省略'_.'並指定'map'等功能*變量*。但是沒有理由讓這些變量成爲全球變量。讓它們對你的模塊是本地的 - 到你控制的代碼段。你不會導入一個模塊,並將其方法分配給python中的全局變量。 – Bergi 2014-11-02 20:21:38