2016-09-08 15 views
6

Bu tuhaf davranışları göstermek için animasyonlu bir gif ekledim. Esasen, sorum, Chrome konsolu var ve let'u aynı kapsamda kullanıldığında farklı şekilde ele alıyor mu? Bir değişkeni bildirdikten/atadıktan sonra, bu değişkenin adını konsola yazmayı denerseniz Chrome'un sizin için otomatik olarak tamamlayacağını ve yazdıklarınızı içeren bir açılır liste göstereceğini fark edeceksiniz. let s kullanırken, durum böyle değil. Bu bir hata mı, özellik mi, yoksa JavaScript'de var ve let hakkında eksik bir şey mi var?Chrome konsolu: 'let' ve 'var' arasındaki fark nedir?

Not: Ben let & hemen kapsamı içinde yaşıyor olduğunu biliyorum. let sadece yerel kapsamda tanımlar iken

enter image description here

+3

Krom geliştirme ekibinin bir üyesi olmadan, a) sadece genel kapsam değişkenlerini otomatik tamamlamalarında ararlar veya b) 'let' için henüz uygulamamışlardı, yoksa c) Uygulamayı unuttu – baao

+3

Sadece meraktan, o gif görüntüsünü nasıl yaptın? –

+0

@OrkhanAlikhanov yeeeees. Bu sorunun en ilginç kısmı! – baao

cevap

9

Konsola var'u kullandığınızda, global kapsamda yürütülür ve değişkeni window nesnesine ekler.

Konsola let'u kullandığınızda, değişkeni window nesnesine eklemeyen genel kapsamda yürütülür. Yazmaya başladığınızda

, otomatik tamamlama özellikleri böyle function, for ve while olarak, diğer dil yapıları ile birlikte tamamlamak için üst nesne denetler.

konsolunda hiçbir içerik yoktur, üst nesne sen letwindow mülkü eklemek değil çünkü aradığınız özellik olmayacak window vardır.

Otomatik tamamlamanın tamamlanması için yeni bir nesneye sahip olduğunuz anda, davranış beklediğiniz şeylere geri döner. söyledi tümü ile Şimdi


> let foo = {bar: 'baz'}; 
> foo.b //autocompletes bar 

, otomatik tamamlama bu şekilde davranmaya sahip olduğunu hiçbir neden yok. Birçok açıdan, global kapsamda let aracılığıyla tanımlanan değişkenler için otomatik tamamlama eksikliği, "hata" değerinde "sabitleme" olarak düşünülebilir. Benim düşünceme göre orta derecede şaşırtıcı bir davranış.

1

var, küresel kapsamı üzerinde bir değişken tanımlar. Büyük olasılıkla, otomatik tamamlama yalnızca hedeflerin genel kapsamına bakıyor.

+0

Her şey mantıklı. Ama şimdi 2017 ve kromun sonu, '' henüz '' değişkenlerini otomatikleştirmiyor (Firefox yaptı. Kromda değişkenler için nasıl otomatik tamamlama yapabileceğimize dair herhangi bir bilgi var mı? –

İlgili konular