Farq bor.
var x = 1
oʻzgaruvchini eʼlon qiladi x
joriy koʻlamda (aka ijro konteksti). Agar deklaratsiya funktsiyada paydo bo'lsa - mahalliy o'zgaruvchi e'lon qilinadi; agar u global miqyosda bo'lsa - global o'zgaruvchi e'lon qilinadi.
x = 1
, aksincha, faqat mulkiy topshiriqdir. U birinchi navbatda qamrov zanjiriga qarshi x
ni hal qilishga harakat qiladi. Agar u ushbu tarmoq zanjirining istalgan joyidan topsa, u topshiriqni bajaradi; agar u x
ni topmasa, u holda u global ob'ektda x
xossasini yaratadi(bu qamrov zanjiridagi yuqori darajadagi ob'ekt).
Endi e'tibor bering, u global o'zgaruvchini e'lon qilmaydi, u global xususiyat yaratadi.
Ikkisi o'rtasidagi farq juda nozik va chalkash bo'lishi mumkin, agar sizo'zgaruvchan deklaratsiyalar ham xususiyatlar yaratishini (faqat o'zgaruvchan ob'ektda) va Javascriptdagi (yaxshi, ECMAScript) har bir xususiyatda tavsiflovchi ma'lum bayroqlarga ega ekanligini tushunmasangiz. ularning xususiyatlari - ReadOnly, DontEnum va DontDelete.
O'zgaruvchilar deklaratsiyasi DontDelete bayrog'i bilan xususiyat yaratganligi sababli, var x = 1
va x = 1
(global miqyosda bajarilganda) o'rtasidagi farq shundaki, birinchisi - o'zgaruvchilar deklaratsiyasi DontDelete'able xususiyatini yaratadi, ikkinchisi esa yaratmaydi. Natijada, ushbu yashirin topshiriq orqali yaratilgan xususiyat global ob'ektdan o'chirilishi mumkin va birinchisi - o'zgaruvchan deklaratsiya orqali yaratilgan - o'chirilmaydi.
Lekin bu, albatta, faqat nazariya vaamalda ikkalasi o'rtasida yanada ko'proq farqlar mavjuduni amalga oshirishdagi turli xatolar (masalan, IE dagilar) tufayli.
Umid qilamanki, hammasi mantiqiy :)
[Yangilanish 2010/12/16]
ES5 da (ECMAScript 5; yaqinda standartlashtirilgan, tilning 5-nashri) "qat'iy rejim" deb ataladigan - qo'shilgan til rejimi mavjud bo'lib, u e'lon qilinmagan topshiriqlarning xatti-harakatlarini biroz o'zgartiradi. Qattiq rejimda e'lon qilinmagan identifikatorga tayinlash ReferenceErrordir. Buning asosi tasodifiy topshiriqlarni qo'lga kiritish, istalmagan global xususiyatlarning paydo bo'lishiga to'sqinlik qilish edi. Ba'zi yangi brauzerlar allaqachon qattiq rejimni qo'llab-quvvatlashni boshladilar. Masalan, mening mos jadvalim ga qarang.
person
kangax
schedule
24.09.2009
const
valet
foydalaning!var
zamonaviy JS emas - person Gibolt   schedule 15.08.2017var
o'rnigalet
dan foydalanishingiz kerak. > (let
vavar
o'zini tutishidagi farqlar tufayli). - person Quentin   schedule 19.12.2019