JavaScript Temelleri

Bölüm 2

Temel Bilgiler

2.1 - JavaScript Programlama Dili Sözdizimi (Sentaks) ve Sözyazımı (Semantik)

Bölüm 2 Sayfa 1

2.1.1 - JavaScript Programlama Dili Sözdizimi

Bir programlama dilinin yazılım özellikleri, bu programlama dili ile yazılmış programların nasıl görüldükleri, programlarda kullanılan değişken ve benzeri öğelerin nasıl isimlendirileceği, yorum satırlarının nasıl belirtileceği, program adımlarının birbirinden nasıl ayrılacağı gibi bilgilerdir. Bu kısımda, bu bilgileri inceleyeceğiz.

Unicode sistemi, tüm dünya dillerinde kullanılan alfanümerik karakterlerin bilgisayarlarda gösterimini sağlamak için geliştirilmiş bir karakter kodlama sistemidir. Unicode karakterleri, Unicode Kod Noktaları adı verilen onaltılı (hex) sayılarla ve özel bir isimle tanımlanır. Unicode sistemi, 7 ve 8 bit ASCII sistemini bir alt set olarak içerir yani, latin-5 spesifikasonu ile tanımlanan Türkçe karakterler gibi, ASCII karakter kodları ile Unicode Kod Noktaları biribirleri ile aynıdır.

JavaScript, Unicode Standardı sürüm 2.1 ve daha sonraki sürümlerini destekler. Günümüzde bu standardın 5.1 sürümü hazırlanmaktadır. Unicode standardı, her karakteri 2 bayt (8bit+8bit) uzunluğunda olan UCS-2 (Universal Character Set) karakterlerini özümsemiştir. Unicode karakterlerini gerçek karakter bitlerine çevirmek için Unicode dönüştürme biçimi (Unicode Transformation Format) kullanılır. Unicode dönüştürme biçimleri, UTF-8, UTF-16, UTF-32 dir. Bunlardan hangisinin uygulanacağı tamamen JavaScriptin yerleştirildiği, belge çözümleyici ortamına bağlıdır. UTF-8, biçimlendirme yöntemi, ilk olarak ilk 8 bit kısmını dönüştürmeyi dener, eğer ikinci bayt değerlerinin kullanılması gerekirse onları da kullanarak döüşümü tamamlar. Günümüzde , belge çözümleyiciler minimum UTF-8 biçimlendirmesini desteklerler. Türkçe karakterler, latin-5 spesifikasyonunda olduklarından, ilk oktet içindedirler ve UTF-8 ile ilk aşamada sorunsuzca dönüştürülürler.

JavaScript, her karakter için Unicode 2.1 spesifikasyonun öngördüğü şekilde 2 bayt karakter uzunluğunu kullanır ve Unicode UTF-16 dönüşüm formatını destekler. Bu önemli değildir, çünkü UTF-8 ile UTF-16 uyumludur ve belge çözümleyiciler UTF-16 ifadelerini UTF-8 olarak uygularlar. Bu iç düzenleme, kullanıcı için önemli değildir, çünkü tüm düzenleme ve iç dönüşüm, JavaScript yorumlayıcısı ve belge çözümleyicisi tarafından gerçekleştirilir. Kullanıcıyı ilgilendiren kısmı, yerel dilleri destekleyen bir metin editörü ile çalışarak kodları yazmaktır.

JavaScript Unicode karakter kodlamasını desteklemektedir. Fakat, bu her Unicode kodlamasının görüntüleneceği anlamına gelmez. Karakterin "Glyph" (Kılıf) ad verilen görüntüsünün de belge çözümleyinin repertuvarında olması gerekmektedir. Doğal olarak bu olasılık az kullanılan ve arkaik diller için geçerlidir. Batı dillerine ait tüm karakterler sorunsuzca görüntülenecektir. Diğerlerinin de görüntü kodları repertuvarı hergün zenginleştirilmektedir.

JavaScript programlama dilinin Unicode karakterlerini desteklemesi, JavaScript programlarında, değişkenler, fonksiyonlar gibi, kullanıcı tanımlı her öğenin, Türkçe isimlerle tanıtılıp çağrılabileceğini belirtir. Bu yerel olarak programın anlaşılabilirliğini arttırır, fakat uluslarası ortamda, yerel diller ile yazılmış programların anlaşılabilirliği azalır.

JavaScript programlarında, klavyede olmayan karakterler, Unicode kaçış (escape) sekansı ile Unicode kod noktası değerlerinden elde edilir. Örnek olarak U+221E, infinity olarak adlandırılmış ∞ işaretinin Unicode kod noktasıdır. Bu karakter, başka bir çıktıdan kopyalanabileceği gibi, bir JavaScript ifadesinde, "Bu Değer,"+\u221E+"Olarak Kabul Edilecektir." şeklinde yazılır. Aynı karakter, bir (X)HTML paragraf elementinin içeriğinde, ∞olarak yazılacak ve ∞ olarak görüntülenecektir. JavaScxript programlarında sadece hex sayılar ile ifade edileb Unicode kod noktaları, (X)HTML işaretleme dilinde istenirse ondalılı karşılıkları ile de kullanılabilir, fakat genel olarak onaltı tabanlı (hex) giriş noktaları (kod noktaları) yeğ tutulur.

Tüm Unicode kod noktaları, son derece kullanışlı olarak yayınlanmıştır.

JavaScript programlama dili, küçük/büyük karakter yazılımına duyarlıdır. Örnek olarak "ev" ifadesi, "Ev" ifadesinden kesinlikle farklı olarak algılanır. Burada en büyük karışıklık JavaScript programlama dilinde ve (X)HTML kodlarında aynı adlarla tanımlanmış olay yöneticileri ile çalışılırken ortaya çıkabilir. Örnek olarak, mouse ile tıklamayı dinleyen olay yöneticisi, JavaScript programlama dilinde onclick olarak küçük harflerle tanımlanmıştır ve bunun değiştirilmesi olanağı yoktur. (X)HTML işaretleme dilinde ise, aynı olay yöneticisi OnClick, onClick, onclick şeklinde ifade edilebilir, çünkü (X)HTML işaretleme dili, küçük/büyük karakter yazılımına duyarlı değildir.

Küçük/büyük karakter duyarlığı, programlarda hataların başlıca kaynaklarından biridir. Programcılar, tanımladıkları değişkenleri veya öntanımlı öğeleri farklı karakter büyüklükleri ile çağırırlarsa, programda hata oluşur. Bunun önlenmesi için, tanımlanan ve çağrılan öğelerin kodlarına özen gösterilmelidir.

JavaScript bir karakter dizgisi veya bir düzenli ifade (regular expression) gereği olmadıkça, her türlü boşluk, satır aralığı ve tab karakterlerini gözardı eder. Bu nedenle, kendimiz için en anlamlı kod düzenlemelerini yaparak, program yazım konforuna sahip olabiliriz. JavaScript programlama dili, Algol/Pascal/ADA serbest yazım formunu benimser. Yazılım yöntemi çok esnek olmasına karşın, alışkanlıktan kaynaklanan belirli kalıplar içinde kalmanın büyük yararı görülür. Çünkü alışılmış kalıplar içinde yazılmış olan bir programın, ilerideki bakımı çok daha kolay olacaktır. http://www.jslint.com/lint.html

JavaScript programlarında, satır araları, istediği kadar açılabilir. Değişkenler, nesneler, fonksiyonlar gibi program öğeleri, istenilen sütunlara konulabilir. Örnek olarak,

r=4;alan=Math.PI*r*r;
		

kod satırında görüldüğü gibi, araya noktalı virgül (ifade sonlandırıcısı) (boş bildirim) konularak, aynı satıra istenildiğ kadar bildirim yazılabilir. Bu şeklde yazılmış kodlar kullanışlı görülebilir. Fakat, alışılagelmiş yöntemler, her satırda tek bir bildirim olmasını öngörür. Ayrıca, JSLint gibi, JavaScript kod denetleyicileri, hataları satır numaraları ile belirtirler ve bir satırda birden fazla bildirim olması, hatanın düzeltilmesini zorlaştırabilir. Bundan başka, aynı satıra birden fazla bildirim yazılmış kodları içeren programların bakımı da kolay olmayabilir. Bu nedenlerle, iyi programlama yöntemleri, her satırda bir tek bildirim olmasını kesinlikle şart koşmaktadır. Yukarıdaki kodlar,

r=4;
alan=Math.PI*r*r;
		

şeklinde yazılmalıdır.

Javascript programlama dilinde, bazı program dillerinde olduğu gibi, blok içine alınmış kodlar, yeni bir kapsam alanı yaratmazlar. JavaScript yorumlayıcısı, bildirim bekleyen if gibi program öğelerine tek bidirim yerine birden çok bildirim belirtilebilmesi için çalıştırılacak bildirimlerin bir bildirim bloğu {} içine alınmasını öngörmüştür. Bildirim bloğu kullanılabilecek program adımları bellidir ve bunlarda kullanılacak bildirim bloğu {} 'nun amacı, içeriğine yeni bir kapsam alanı açmak değil, içeriği olan bildirimlerin sıra ile çalıştırılmasını sağlamaktır. Javascript programlama dilinde yeni bir kapsam alanını ancak fonksiyonlar ve with bildirimi açabilir.

JavaScript programlama dilinde yorumlar, tek bir satır içinde // işarertleri ile yapılır. Örnek,

if(!sum) f=false;// Bayrak İnik !
		

Burada satır, // işaretine kadar normal bir program satırı kabul edilir. Bundan sonrası ise, yorum olarak kabul edilir ve JavaScript yorumlayıcısı, bu kısmı gözardı eder.

Birden çok satırı kapsayacak yorumlar ise, aynı C ve Java programlarında olduğu gibi, /*....*/ işaretleri arasında tutulur. Örnek:

/* Bunlar çok satırlı
yorumlardır. */
		

Çok satırlı yorumlar içiçe yuvalanamazlar.

Tanımlayıcılar, Javascript değişkenlerini, fonksiyonlarını, nesnelerini ve tüm diğer öğelerini adlandırmak üzere kullanılabilen alfasayısal karakter topluluklarıdır. Görevleri, belirli bellek bloklarının, program boyunca belirli bir tanımla çağrılmalarını sağlamaktır. Yani, tanımlayıcılar birer isimdir. Tanımlayıcıların yazılımı ECMA-262 de detaylı olarak verilmiştir ve bu tanım uygulamada tüm belge çözümleyicilerce de desteklenmektedir. ECMA-262 de verilmiş olan tanımlayıcı tanımı :

Syntax


Identifier ::
IdentifierName but not ReservedWord


dentifierName ::

IdentifierStart

IdentifierName IdentifierPart

IdentifierStart ::
UnicodeLetter
$
_
\ UnicodeEscapeSequence


IdentifierPart ::
IdentifierStart
UnicodeCombiningMark
UnicodeDigit
UnicodeConnectorPunctuation
\ UnicodeEscapeSequence


UnicodeLetter
any character in the Unicode categories Uppercase letter (Lu), Lowercase letter (Ll), Titlecase letter (Lt), Modifier letter (Lm), Other letter (Lo), or Letter number (Nl).


UnicodeCombiningMark
any character in the Unicode categories Non-spacing mark (Mn) or Combining spacing mark (Mc)


UnicodeDigit
any character in the Unicode category Decimal number (Nd)


UnicodeConnectorPunctuation
any character in the Unicode category connector punctuation (Pc)


UnicodeEscapeSequence
see section 7.8.4.


HexDigit :: one of
0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f  A  B  C  D  E  F

Görüldüğü gibi, tamımlayıcıların oluştulması için gayet geniş sınırlar içinde hareket olanakları getirilmiştir. JavaScript programlama dilinde tanımlayıcılar, aynen Java, C ve çoğu programlama dilinde olduğu gibidir. Yukarıdaki tanıma göre, bir tanımlayıcıda,

Tanımlayıcılar $ işareti ile başlayabilir, fakat güncel kullanımda bu olanak sadece makine tarafından oluşturulan otomatik JavaScript kodlarına bırakılmaktadır. Yani insanlar tarafından oluşturulan kodlarda, önleyici hiçbir kural olmamasına karşın, tanımlayıcılarda $ karakteri kullanılmamalıdır.

Yukarıdaki tanımların açıkladıklarına göre, JavaScript programlarında, tüm Unicode karakterleri kullanılabilmektedir. Bu durumda, Türkçe karakter içeren literaller ve tanımlayıcıların (identifier) kullanılması kesinlikle yasaldır. Bu karakterlerin, ECMA-262 standardını destekleyen tüm belge çözümleyicilerce de destekleneceği (bunlar arasında kullanıcıların büyük bir kısmının kullandığı Internet Explorer ile Firefox da bulunmaktadır) açıklıkla görülmektedir. Bu konuda dikkat edilecek nokta, tanımlayıcılar ve yorum satırlarında Türkçe karakterlerin kullanılması, programların ulusal alanda okunabilirliğini arttırırken, uluslararası alanda, okunabilirliklerini azalttığıdır.

Web son derece uluslarası bir ortamdır. Yazılan scriptler, çoğu durumlarda farklı ülkelerdeki kullanıcılar tarafından adapte edilmektedir. Bu bilgi iletimini sağlayabilmek için profesyonel çalışmalarda, her türlü tanımlayıcının İngilizce olarak oluşturulması uygun olacaktır.

Tanımlayıcılar $ işareti ile başlayabilir, fakat güncel kullanımda bu olanak sadece makine tarafından oluşturulan otomatik JavaScript kodlarına bırakılmaktadır. Yani insanlar tarafından oluşturulan kodlarda, önleyici hiçbir kural olmamasına karşın, $ karakteri kullanılmamamaktadır.

JavaScript küçük/büyük karakter yazılımına duyarlı bir programlama dilidir. Yani Belgelerim tanımlayıcısı belgelerim tanımlayıcısından farklıdır. Buna rağmen program içinde salt küçük/büyük karakter farkı olan Turfan ve turfan gibi iki tanımlayıcının aynı programda kullanılmaması daha güvenli olacaktır.

Örnek olarak, boğazkesen, güğüm, kaşağı, _süreç1, _kap_3, ECMA-262 standardına göre geçerli tanıtıcılar iken, 06Ankara ECMA-262 standardına göre geçersiz olacaktır, çünkü ilk karakteri, sayısal bir karakterdir.

Aşağıda verilen saklı sözcükler listelerinden görüldüğü gibi, ECMA-262, JavaScript 1.5 ve JScript saklı sözcükleri birbirlerinden farklıdır. Uyumlu olması olması hedeflenen kodlarda, bu saklı sözcüklerin hiçbiri kullanılmamalıdır.

ECMA-262 Saklı Sözcükleri (Bugün İçin Geçerli Olanlar)
break else new var
case finally return void
catch for switch while
continue function this with
default if throw
delete in try
do instanceof typeof

JScript Saklı Sözcükleri
(Bugün İçin Geçerli Olanlar)
break else new var
case finally return void
catch for switch while
continue function this with
default if throw
delete in try
do instanceof typeof

ECMA-262 Gelecekte Kullanılacak Saklı Sözcükler
abstract enum int short
boolean export interface static
byte extends long super
char final native synchronized
class float package throws
const goto private transient
debugger implements protected volatile
double import public

JScript Gelecekte Kullanılacak Saklı Sözcükler
abstract enum int short
boolean export interface static
byte extends long super
char final native synchronized
class float package throws
const goto private transient
debugger implements protected volatile
double import public

javascript 1.5 Bugün ve Gelecekte Kullanılacak Saklı Sözcükler
abstract else instanceof switch
boolean enum int synchronised
break export interface this
byte extends; long throw
case false native throws
catch final new transient
char final new transient
char finally null true
class float package try
const for private typeof
continue function protected var
debugger goto public void
default if return volatile
delete implements short; while
do import static with
double in super  

ECMA-262 ve JScript bugün için ve gelecekte kullanılmaları planlanmış tüm saklı sözcükler de bu tablodaki saklı sözcükler ile çakışmaktadır. Bu durumda son tablo, tanımlayıcılarda kullanılmaması gereken saklı sözcüklerin tümünü kapsamaktadır.

Ayrıca, tanımlayıcılar, ECMA-262 uyumlu bir JavaScript içinde yerleşik olan hiçbir öntanımlı fonksiyon, nesne, özellik veya değer ile aynı olmamalıdır. Bu konuda Microsoft tarafından yayınlanmış JScript 5.6 referansı yararlı olacaktır.

Yukarıdaki tablodan da görülebileceği gibi, Javascript 1.5 sürümümün ECMA-262 uyumlu bir JavaScript den daha ileri olduğu düşünülebilir ve bu kesinlikle doğrudur. Ne yazık ki günümüzde Internet kullanıcılarının %90 lara varan bir çoğunluğunca kullanılmakta olan Internet Explorer ECMA-262 ve W3C-DOM uyumlu kısımları olan bir Javascript variantı olan JScript'i desteklemektedir. Bu nedenle çalışmalarımız, JavaScript programlama dili ailesinin JScript ve Mozilla JavaScript1.5 variyantlarının, ECMA-262 ve W3C-DOM uyumlu kısımları ile sınırlı kalacaktır. Uyumlu veya platformlarası olarak adlandırılabilecek bu JavaScript variyantının temel (core) kısmı, ECMAScript olarak adlandırılmaktadır. (X)HTML sayfalarının içeriğinin JavaScript ile etkileşim sistemini düzenleyen Belge Nesne Nodeli (DOM) standartları W3C-DOM olarak yayınlanmıştır. Bu sınırlama, yazılacak JavaScript programlarının, hem IE 6+, hem Firefox 1+, hem de ECMA-262 ve W3C-DOM spesifikasyonunu destekleyen diğer belge çözümleyicilerle desteklenebilmesi amacı ile yapılmıştır. Bu çalışmalardaki hedefimiz, ilk önce en çok kullanılanlar olmak üzere, olabildiğince çok belge çözümleyici tarafından desteklenebilen kodların yaratılabileceği uyumlu bir JavaScript programlama ortamını tanıtmaktır.

2.1.2 - JavaScript İşlemcilerininTanıtımı

JavaScript işlemcileri C+++, Java, Perl gibi diğer modern programlama dillerinde olan işlemci (operatör) lere çok benzerler. JavaScript işlemcilerinin bazıları basit işaretler, bazıları da bir tür hazır fonksiyona benzeyen saklı sözcüklerdir.

İşlemciler, işlenen (operand) adı verilen bilgi parçacıklarını yorumlar ve onlara yeni anlamlar kazandırılar. ECMA-262 uyumlu Javascript programlama dilinde, tek işlenenli (unary) (tekli), çift işlenenli (binary)(çiftli) ve de bir tane üç işlenenli (tertiary) (üçlü) işlemci bulunur. Bu işlemciler, aşağıda görülmektedir.

Tekli İşlemciler
İşlemci Adı
delete delete işlemcisi
void void (Boşluk) İşlemcisi
typeof typeof İşlemcisi
++ Arttırma (Increment) İşlemcisi
-- Eksiltme (Decrement) İşlemcisi
+ Tekli Artı (Unary Plus) İşlemcisi
- Tekli Eksi (Unary Minus) İşlemcisi
~ Bit Temelli Olumsuzluk (Bitwise NOT) İşlemcisi
! Mantıksal Olumsuzluk (Logical NOT) İşlemcisi

İkili İşlemciler
İşlemci Adı
Çarpım İşlemcileri
* Çarpma İşlemcisi
/ Bölme İşlemcisi
% Modulo (Kalan) İşlemcisi

Toplam İşlemcileri

 
+ Toplama İşlemcisi
- Çıkarma İşlemcisi

Bit Temelli İşlemciler

<< Sola Kaydırma İşlemcisi
>> İşaretli Sağa Kaydırma İşlemcisi

>>>

İşaretsiz Sağa Kaydırma İşlemcisi

İlişkisel İşlemciler

 

< Küçüktür İşlemcisi
> Büyüktür İşlemcisi
<= Küçüktür-veya-Eşittir İşlemcisi
>= Büyüktür-veya-Eşittir İşlemcisi
Instanceof Instanceof İşlemcisi
in in İşlemcisi
Eşitlik İşlemcileri
== Değerle Eşittir İşlemcisi
!= Değerle Eşit Değildir İşlemcisi
=== Değer ve Tiple Eşittir İşlemcisi
!== Değer ve Tiple Eşit Değildir İşlemcisi
Bit Temelli İkili İşlemciler
& Bit Temelli AND İşlemcisi
^ Bit Temelli XOR İşlemcisi
| Bit Temelli OR İşlemcisi
Mantıksal İkili İşlemciler
&& Mantıksal AND İşlemcisi
| | Mantıksal OR İşlemcisi
Atama İşlemcileri
= Basit Atama İşlemcisi
+= Bileşik Toplama Atama İşlemcisi
*= Bileşik Çarpma Atama İşlemcisi
/= Bileşik Bölme Atama İşlemcisi
%= Bileşik Modulo Atama İşlemcisi
&= Bit Tabanlı Bileşik AND Atama İşlemcisi
^= Bit Tabanlı Bileşik XOR Atama İşlemcisi
|= Bit Tabanlı Bileşik OR Atama İşlemcisi
<<= Bit Tabanlı Bileşik Sola Kaydırıp Atama İşlemcisi
>>= Bit Tabanlı Bileşik Sağa Kaydırıp Atama İşlemcisi
>>>= Bit Tabanlı Bileşik İşaretli Sağa Kaydırıp Atama İşlemcisi

Üçlü İşlemci
İşlemci Adı
? Üçlü Koşul İşlemcisi

Özel İşlevli İşlemciler
İşlemci Adı
, Virgül (Komma) İşlemcisi
() Gruplama (Parantez) İşlemcisi
new new İşlemcisi

Görüldüğü gibi, etkileyici sayıda işlemci bulunmaktadır. Bunlar konular içinde teker teker tanıtılacaktır.

JavaScript ifadelerinin hesaplanmaları sırasında, aşağıda verilmiş olan işlem sırasına uyulur.

JavaScript İşlemcilerinin Öncelik Sıraları
(En yüksek Öncelik en Üstte)
İşlemci Adı
. [] () Alan Çağırma, dizi indeksleme, fonksiyon çağrıları ve ifade gruplandırmaları
++ -- - ~ ! delete new typeof void Tekli işlemciler, return veri tipi, nesne oluşturulması, undefined değerler
* / % Çarpma, bölme, Modulo (Kalan) bölmesi
+ - + Toplama, çıkartma, karakter dizgisi birleştirilmesi (string concatenation)
<< >> >>> Bit kaydırma
< <= > >= instanceof Küçüktür, küçük veya eşit, büyüktür, büyük veya eşit, instanceof
== != === !== Eşitlik, eşitsizlik, kesin eşitlik, kesin eşitsizlik
& Bit temelli AND
^ Bit temelli XOR
| Bit temelli OR
&& Mantıksal AND
|| Mantıksal OR
?: Üçlü koşul
=OPERAND= Atama, işlemle birlikte atama,
, Çoklu değerlendirme

JavaScript programlama dilinde, ifade sonuçlarının öngörülen yönde gelişmesinin sağlanabilmesi için, yukarıdaki tabloda belirtilen öncelik sıralarının büyük önemi vardır. Öncelik sıraları uygun olmazsa, parantezler yardımı ile uygun hesaplama ifadeleri. oluşturulabilir.

İlk olarak inceleyeceğimiz bu işlemci sadece aynı satırdaki ifadeleri ardışık olarak çalıştırır. Sözdizimi,

ifade1 , ifade2 , ...

şeklindedir. Burada ifade1 ve ifade2 her türlü ifadeyi kapsar. Örnek:

		var d = 9, p = 4;
		

Bu işlemci, program yazımında büyük kolaylık sağlamaktadır.

2.1.3 - JavaScript Bildirimlerinin Tanıtımı

Bildirimler, JavaScript yorumlayıcısına yapması gereken işlemleri belirten komutlardır. ECMA-262 uyumlu Javascript programlama dilinde kullanılan bildirimler aşağıda görülmektedir :

ECMA-362 Bildirimleri
İşlev Bildirim
{} Bloklama
var Değişken Tanımlanması
; Boş Bildirim
ifade İfade
if ..else Dallanma
do ..while Döngü
while Döngü
for Döngü
for ..in Döngü
continue İterasyon Atlama
break Döngü Sonu
function Fonksiyon Bildirimi
return Fonksiyon Sonucunun Döndürülmesi
with Nesne İçi İşlem
switch ..case Dallanma
Etiketli İfadeler Dallanma
throw Hata Oluşturma
try ..catch Hata Yakalama
try ..finally Hata Yakalama
try ..catch finally Hata Yakalama

JavaScript bildirimleri, JavaScript yorumlayıcısına çalıştırılacak program adımlarını bildirirler. İlk olarak inceleyeceğimiz bildirim olan boş bildirim (;) hiçbirşeyi çalıştırmayan ve hiçbirşey yaptırmayan bir bildirimdir. Onun için, boş bildirim (empty statement) adı verilmiştir.

Boş bildirim programın her yerinde kullanılabilir ama, işlevsiz kullanımı gereksizdir ve iyi bir programlama stili değildir. Boş bildirimin tek kullanım yeri, bildirim sonunun belirtilmesidir. Bu da zorunlu değildir fakat, Ek-2 de verilmiş olan ve deneyimli programcıların çoğunluğu tarafından uygulanan JavaScript Kodlama Konvansiyonu, her bildirimin mutlaka boş bildirim ile sonlandırılmasını gerekli kılmaktadır. Aynı konvansiyona göre, her satırda sadece tek bir bildirim olması ve bunun da bildirim sonlandırıcısı (boş bildirim) (noktalı virgül) ile bitirilmesi öngörülmüştür.

JavaScript bildirimleri, istenirse bildirim sonu belirtilmeden alt satıra geçilerek de yazılabilirler. Bu durumda, JavaScript yorumlayıcısı bildirim sonlandırıcısını bizim için bildirime ekleyecektir. Buna rağmen, Javascript bildirim sonlandırıcısı olan noktalı virgülün ihmal edilmesi iyi bir programlama tekniği değildir. Böyle bir ihmal ileride programın anlaşılmasını ve bakımını zorlaştırır. Ayrıca, noktalı virgülleri ihmal etmek, JavaScript yorumlayıcısının, program yazılımını yanlış olarak algılamasına da neden olabilir. Örnek

return
a
		

satırlarını, JavaScript yorumlayıcısı,

return;
a;
		

şeklinde yorumlar. Aslında, büyük bir olasılıkla,

return a;
		

bildirimi yapılmak istenmiş fakat JavaScript yorumlayıcısı, programcının amacı ile hiç ilgisi olmayan bir yorum yapmıştır. Bu durumda, Bildrimlerin sonuna noktalı virgüllerin konulması kuralına kesinlikle uyulmalı ve JavaScript yorumlayıcısının noktalı virgülün yerini tahmin etmesine gerek bırakılmamalıdır.

Valid XHTML 1.1