Geçtiğimiz günlerde birçok NodeJS ve Javascript koduna baktığımızda, argümanların bir Array örneği değil, hala bir gibi davrandığı görülüyor, bu yüzden insanlar Array.prototype.slice.call(arguments, ...)
veya [].slice.call(arguments)
gibi şeyler yapıyorlar ve bu da ayrıntı eklemekte ve yenilerini anlamak için engel oluşturuyor. Argümanların bir Array örneğinin olmaması için bir neden var mı yoksa bu sadece bu kötü parçalar mı?Javascript işlevi `arguments` niçin node.js’de Array örneği değil?
10
A
cevap
28
NO. arguments
, length
özelliğine sahip olması ve []
kodlamasını endekslemek için kullanılan bağımsız bir nesnedir. Ama aksi halde, sadece bir nesne, bir Array
nesnesi değil.
Ve evet, bu gerçekten JavaScript'in kötü kısımlarından biridir.
Açıklık getirdiğiniz için teşekkür ederim, .callee vb. Gibi ekstra özelliklere sahip olduğunu biliyorum ama ideal bir dünyada, Array prototipini işaret etmemelilerdi. Bu yüzden doğrudan üzerine dilimleyici/dilim olurdu. JS geliştiricisini çekmemeyi ama sadece benim anlayışımı açıklığa kavuşturmamalarını rica ediyorum, ideal olarak birisi etrafta dönecek ve fikrim x/y/z (temel yanlış anlaşılma vb.) Nedeniyle geciktirildiğini söyleyelim.) –
@mattcodes Evet, kesinlikle yapmış olmalılar söyledi. JS'nin bir tuhaflığı var ve bu onlardan biri. –
Ayrıca 'arguments [0]' vb. 'Argümanları [0] 'olarak atamazsınız * ilk resmi parametrenizle aynı olan *, aynı şeyi değiştirerek, diğerini de değiştirir. –