2015-09-11 15 views
8

NedenNeden ... neden incelikle başarısız ... ama bir istisna atmak için?

for (let e in null) void e 

incelikle başarısız olduğunu, ama bu

for (let e of null) void e 

bir TypeError atar? Bu bir tutarsızlık ile sonuçlanmaz mı?

+2

Bu tartışma konuyla ilgili görünüyor: https://esdiscuss.org/topic/will-for-var-a-of-null-throw-an-error. –

+0

Teşekkürler, gerçekten de çok ilginç bir soruya cevap veriyor. –

cevap

6

for...of sadece bu iki olmadığı null (yani nesneler iterable protocol uygulamak) iterable nesneler üzerinde çalışır. Oysa for...in tüm değerler üzerinde çalışır.

+0

'null instanceof Nesne' false' –

+3

verir, ancak 'typeof null'' object' - açıkça anlamsız. '' '' bir istisna atma davranışı için (çünkü null yinelenmez değildir) '' n''nın iddialı iddiası 'null' hiçbir prototip zinciri olmayan bir boş 'nesne' olduğunu iddia ediyor. Bu arada, Doug Crockford'un “typeof operator” ile bir nesne olarak “null” un talihsiz sınıflandırması hakkındaki klasik kitabında 'Ek A: Aweful Parts', sayfa 103'e bakın. – caasjj

+0

@ Peter Varga Javascript'teki her şey nesne ('null' dahil) nesnesidir. – hindmost

İlgili konular