Professional Documents
Culture Documents
JavaScript Level One
JavaScript Level One
اﻟﻤﻘﺪﻣﺔ :
اﻟﺤﻤﺪ ﷲ ﻣﺎﺣﻤﺪه اﻟﺤﺎﻣﺪون وﻏﻔﻞ ﻋﻦ ﺣﻤﺪه اﻟﻐﺎﻓﻠﻮن واﻟﺼﻼة واﻟﺴﻼم ﻋﻠﻰ ﻋﺒﺪه ورﺳﻮﻟﻪ ﻣﺤﻤﺪ ﺻﻼة ﺑﻌﺪد ذرات
اﻟﺨﻼﺋﻖ وﻣﺎ ﻳﻜﻮن .ورﺿﺎك اﻟﻠﮫﻢ ﻋﻦ آﻟﻪ اﻟﻄﯿﺒﯿﻦ وﺻﺤﺒﻪ اﻟﻤﻜﺮﻣﯿﻦ اﻟﻤﺒﺠﻠﯿﻦ أﺟﻤﻌﯿﻦ وﺑﻌﺪ ،
ﻳﻘﺪم ھﺬا اﻟﺠﺰء ﻣﻦ اﻟﻜﺘﺎب اﻟﺨﻄﻮات اﻷوﻟﻲ ﻟﺘﻌﻠﯿﻢ ﻟﻐﺔ اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ ،ورﺑﻤﺎ ﻳﺤﺘﺎج اﻟﻘﺎرئ أن ﻳﻜﻮن ﻣﻠﻤﺎ ﺑﺄﺳﺎﺳﯿﺎت
ﻟﻐﺔ اﻟﮫﺘﻤﻞ htmlاﻟﺨﺎﺻﺔ ﺑﺘﻜﻮﻳﻦ ﺻﻔﺤﺎت اﻟﻮﻳﺐ
ﻓﻲ ﺣﺎﻟﺔ وﺟﻮد أي أﺧﻄﺎء أرﺟﻮ اﻋﻼﻣﻲ ﻋﻦ اﻟﺨﻄﺄ ﻋﻠﻲ اﻟﻌﻨﻮان اﻟﺘﺎﻟﻲ
a_elhussein@hotmail.com
إھﺪاء :
وﻗﺪ ﺷﺎء اﷲ أن أﻧﮫﻲ ھﺬا اﻟﺠﺰء ﻣﻦ اﻟﻜﺘﺎب ﻓﻲ ﻳﻮم ﻣﯿﻼد اﻟﻨﺒﻲ اﻷﻣﻲ ﻣﺤﻤﺪ ﺑﻦ ﻋﺒﺪ اﷲ ﺻﻠﻲ اﷲ ﻋﻠﯿﻪ وﺳﻠﻢ وھﻮ
أول ﻣﻌﻠﻢ و ﺧﯿﺮ ﻣﻌﻠﻢ ﺑﻤﺎ ﻋﻠﻤﻪ اﷲ ،ﻓﺄﺣﻤﺪ اﷲ ﻋﻠﻲ أن ھﺪاﻧﻲ ﻟﮫﺬا وﻣﺎ ﻛﻨﺎ ﻟﻨﮫﺘﺪﻳﺎ ﻟﻮﻻ أن ھﺪاﻧﺎ اﷲ .
وإﻧﺎ ﻣﺎداﻣﺖ ﻓﯿﺎ اﻟﺤﯿﺎة ﺑﺎذل ﺟﮫﺪي وﻋﻘﻠﻲ وﻣﺴﺘﻔﺮغ ﻃﺎﻗﺘﻲ ﻓﻲ اﻟﻌﻠﻢ وذﻟﻚ ﻟﺜﻼﺛﺔ أﻣﻮر
ﺍﻟﻤﺤﺘﻮﻳﺎﺕ
2
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
ﺍﻟﻔﺼﻞ ﺍﻷﻭﻝ
ﻣﻘﺪﻣﺔ ﻟﻠﻐﺔ ﺍﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ
3
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
ﺑﺎﻹﺿﺎﻓﺔ إﻟﻲ أﻧﮫﺎ ﺑﺮﻣﺠﻪ ﻛﺎﺋﻨﯿﺔ اﻹﻋﺘﻤﺎد Object baseاي ﺗﻌﺘﻤﺪ ﻋﻠﻲ وﺟﻮد ﺑﻌﺾ اﻟﻔﺌﺎت ان ﺻﺢ اﻟﺘﻌﺒﯿﺮ ﻣﺒﻨﯿﺔ ﺑﺪاﺧﻞ
اﻟﻠﻐﺔ ﻳﻤﻜﻦ إﺳﺘﺨﺪاﻣﮫﺎ ﺑﻜﻞ ﺳﮫﻮﻟﺔ ﻣﺜﻞ اﻟﻜﺎﺋﻦ windowو اﻟﻜﺎﺋﻦ . document
ﺗﻌﻤﻞ ﻟﻐﺔ اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ ﻣﻦ ﺧﻼل ﺟﻤﯿﻊ أﻧﻈﻤﺔ اﻟﺘﺸﻐﯿﻞ ﻣﺜﻞ اﻟﻮﻳﻨﺪوز و اﻟﻠﯿﻨﻜﺲ ،ﻓﮫﻲ ﻻ ﺗﻌﺘﻤﺪ ﻋﻠﻲ ﻧﻈﺎم
اﻟﺘﺸﻐﯿﻞ . Platform independent
اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ ھﻲ ، case sensitive languageأي أن اﻟﻜﻠﻤﺔ اﻟﻤﻜﺘﻮﺑﻪ ﺑﺎﻟﺤﺮوف اﻟﻼﺗﯿﻨﯿﻪ اﻟﺼﻐﯿﺮه ﺗﺨﺘﻠﻒ ﻋﻦ ﻧﻔﺲ
اﻟﻜﻠﻤﺔ ﻣﻜﺘﻮﺑﺔ ﺑﺎﻷﺣﺮف اﻟﻜﺒﯿﺮه
ﻣﺜﻼ:
Naserﻏﯿﺮ naserﻏﯿﺮ ، naSerوھﻜﺬا ..
;var x = 3
4
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ ﻛﻤﺎ اﻟﮫﺘﻤﻞ HTMLﺗﺘﺠﺎھﻞ اﻟﻤﺴﺎﺣﺎت اﻟﺨﺎﻟﯿﺔ ،واﻟﺴﻄﻮر اﻟﺠﺪﻳﺪة ،ﻣﺜﻼ:
ﻣﻊ ﻣﻼﺣﻈﺔ أﻧﻪ ﻻﺑﺪ ﻣﻦ ﺗﺮك ﻣﺴﺎﻓﺔ ﺧﺎﻟﯿﺔ ﻋﻠﻰ اﻷﻗﻞ ﺑﻌﺪ أي ﻣﺼﻄﻠﺢ ﻣﻦ ﻣﺼﻄﻠﺤﺎت اﻟﺠﺎﻓﺎ
وﺷﻲء ﻣﮫﻢ أﻳﻀﺎ ..اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ ﺗﻌﺘﺒﺮ ﻣﻦ أﺑﺴﻂ اﻟﻠﻐﺎت ! اﻟﻜﻞ ﻳﺴﺘﻄﯿﻊ ﺗﻌﻠﻤﮫﺎ ..ﻧﻌﻢ اﻟﻜﻞ . ..أﻻ ﺗﻮاﻓﻘﻨﻲ اﻟﺮأي ،
أن ﻛﺘﺎﺑﺔ اﻟﻜﻮد اﻟﺨﺎص ﺑﻚ ﻣﺒﺎﺷﺮة أﻓﻀﻞ أﻟﻒ ﻣﺮة ﻣﻦ اﻟﺒﺤﺚ ﻋﻨﻪ ﻓﻲ اﻟﺸﺒﻜﻪ .
ﺑﺎﻹﺿﺎﻓﻪ اﻟﻰ أﻧﻚ ﺗﺤﺘﺎج اﻟﻰ ﺑﺮاﻣﺞ ﺧﺎﺻﺔ ﻟﻠﻜﺘﺎﺑﺔ ﺑﻠﻐﺔ اﻟﺠﺎﻓﺎ ،ﺑﯿﻨﻤﺎ اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ أﺑﺴﻂ ﺑﻜﺜﯿﺮ ! ﻳﻤﻜﻨﻚ ﺑﻤﺠﺮد ﻓﺘﺢ
أي ﺑﺮﻧﺎﻣﺞ ﺗﺤﺮﻳﺮ ﻧﺼﻮص ﻣﺜﻞ اﻟﻨﻮﺗﺔ NOTEPADﻛﺘﺎﺑﺔ اﻟﺴﻜﺮﺑﺖ ﻛﺎﻣﻼ !!! ﺻﺪق أوﻻ ﺗﺼﺪق .ﻟﻦ ﺗﺤﺘﺎج اﻟﻰ ﺷﻲ آﺧﺮ
ﺳﻮى اﻟﻤﺘﺼﻔﺢ ﻟﺘﺮى اﻟﻨﺘﯿﺠﻪ .
5
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
ﻟﻸﺳﻒ ،اﻹﺟﺎﺑﺔ ﺑﻼ !
اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ أﺻﻼ ﻣﺼﻤﻢ ﻣﻦ ﻗﺒﻞ ﺷﺮﻛﻪ ﻧﺘﺴﻜﯿﺐ .اذا ﻧﺘﺴﻜﯿﺐ أﻛﺜﺮ دﻋﻤﺎ ﻟﻪ .ﻣﻦ ﺟﮫﺔ أﺧﺮى ھﻨﺎك ﻓﺮوﻗﺎت
أﺳﺎﺳﯿﺔ ﻓﻲ ﺗﻌﺎﻣﻞ ھﺬﻳﻦ اﻟﻤﺘﺼﻔﺤﯿﻦ ﻣﻊ اﻟﺠﺎﻓﺎ ،وﺑﻌﻀﮫﺎ ﻳﻄﺎل ﺣﺘﻰ اﻷواﻣﺮ اﻷﺳﺎﺳﯿﻪ .
ﺳﻨﺘﻄﺮق ﻻﺣﻘﺎ اﻟﻰ ﻛﯿﻔﯿﺔ ﺗﺠﺎوز ھﺬه اﻟﻌﻘﺒﺔ ،أﻣﺎ اﻵن ﻓﺪﻋﻨﻲ أﺧﺒﺮك ﺑﺄن أﻓﻀﻞ ﻃﺮﻳﻘﺔ ﻟﻠﺘﺄﻛﺪ ﻣﻦ ﻋﻤﻞ اﻟﺴﻜﺮﺑﺖ ھﻮ
ﺗﺠﺮﺑﺘﻪ ﻋﻠﻰ ﻛﻼ اﻟﻤﺘﺼﻔﺤﯿﻦ .ﻃﺒﻌﺎ ﺳﺘﺪھﺸﻚ ﻛﺜﺮة اﻟﻤﻮاﻗﻊ اﻟﺘﻲ ﻓﺸﻠﺖ ﻓﻲ اﻟﻮﺻﻮل ﺑﺼﻔﺤﺎﺗﮫﺎ اﻟﻰ أﻓﻀﻞ ﺷﻜﻞ
ودﻋﻢ ﻟﻜﻼ اﻟﻤﺘﺼﻔﺤﯿﻦ ،وھﺬا ﻣﺎﻳﻔﺴﺮ اﻟﺴﻄﺮ اﻟﺬي ﻧﺮاه ﻛﺜﯿﺮا:
ﻃﺒﻌﺎ وﻷن اﻷﻏﻠﺒﯿﺔ ﺗﺴﺘﺨﺪم اﻹﻛﺴﺒﻠﻮرر ،ﻓﺴﯿﻜﻮن اﻟﺘﺮﻛﯿﺰ ﻋﻠﯿﺔ ﻓﻲ اﻟﺸﺮح واﻷﻣﺜﻠﻪ ،وﻟﻦ أﻧﺴﻰ اﻟﺘﻄﺮق اﻟﻰ ﻛﯿﻔﯿﺔ
ﻣﻌﺮﻓﺔ ﻧﻮع اﻟﻤﺘﺼﻔﺢ اﻟﺨﺎص ﺑﺎﻟﻤﺴﺘﺨﺪم .
><HTML
><HEAD
><TITLE>My First Script</TITLE
></HEAD
><BODY
><H2> this is my First JavaScript Code </H2
><HR
>"<SCRIPT LANGUAGE="JavaScript
<!--
;)"document.write("Hello World
>//--
></SCRIPT
></BODY
></HTML
6
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
ھﺬا اﻟﻤﺜﺎل اﻟﺒﺴﯿﻂ ﺳﻮف ﻳﻜﻮن اﻟﺒﻮاﺑﺔ اﻷوﻟﻲ ﻟﺪﺧﻮل ﻋﺎﻟﻢ اﻟﺒﺮﻣﺠﺔ ﺑﻠﻐﺔ اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ
وﻣﻨﻪ ﺳﻮف ﻧﺘﻌﺮف ﻋﻠﻲ اﻟﺨﻄﻮات اﻟﻤﺘﺒﻌﺔ ﻟﻜﺘﺎﺑﺔ ﻛﻮد ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ وھﻲ ﻛﻤﺎ ﻳﻠﻲ :
• ﻧﻼﺣﻆ أﻧﻨﺎ أدرﺟﻨﺎ ﻛﻮد اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ ﺑﺪاﺧﻞ أﻛﻮاد)أوﺳﻤﻪ( ھﺘﻤﻞ ، HTMLﻟﺬﻟﻚ ﻣﺒﺪﺋﯿﺎ ﻧﻼﺣﻆ أن
ﺣﺘﻲ ﻳﺘﻢ ﺗﻨﻔﯿﺬ أﻛﻮاد اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ ﺳﻮف ﻧﺤﺘﺎج إﻟﻲ إدراج ﻛﻮد اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ ﻓﻲ ﻣﻠﻒ ذو إﻣﺘﺪاد
htmأو ) htmlأو ﻣﻠﻔﺎت دﻳﻨﺎﻣﯿﻜﯿﺔ ﻣﺜﻞ ASPأو (PHP
ﻟﺬﻟﻚ ﺳﻮف ﻧﺤﻔﻆ اﻟﻜﻮد اﻟﺴﺎﺑﻖ ﻓﻲ ﻣﻠﻒ وﻟﯿﻜﻮن firstJs.htm
• ﺛﺎﻧﯿﺎ رﺑﻤﺎ ﻳﺘﺒﺎدر إﻟﻲ اﻟﺬھﻦ ﻛﯿﻒ ﻳﺘﻢ اﻟﻔﺼﻞ ﺑﯿﻦ ﻛﻮد اﻟﮫﺘﻤﻞ وﻛﻮد اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ ﻻﺣﻆ اﻟﻜﻮد
اﻟﺘﺎﻟﻲ
>"<SCRIPT LANGUAGE="JavaScript
// ﻫﻨﺎ ﯾﺘﻢ ﻛﺘﺎﺑﺔ ﻛﻮد اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ
></SCRIPT
ﺑﻜﻞ ﺳﮫﻮﻟﺔ ﺗﻮﻓﺮ ﻟﻨﺎ ﻟﻐﺔ اﻟﮫﺘﻤﻞ أﺣﺪ اﻷوﺳﻤﺔ ) (Tagوھﻮ ><script
ھﺬا اﻟﻮﺳﻢ ﻳﺤﺘﺎج ان ﻧﺤﺪد ﻟﻪ اﺳﻢ اﻟﻠﻐﺔ اﻟﻤﺴﺘﺨﺪﻣﺔ ﻟﻜﺘﺎﺑﺔ اﻟﺴﻜﺮﺑﺖ
وﻳﺘﻢ ھﺬا ﻣﻦ ﺧﻼل إﺳﺘﺨﺪام اﻟﻤﻌﺎﻣﻞ Languageﺑﺎن ﻧﺤﺪد ﻟﻪ اﻟﻘﯿﻤﺔ JavaScript
ﻣﻊ ﻣﻼﺣﻈﺔ أﻧﮫﺎ ھﻲ اﻟﻘﯿﻤﺔ اﻷﻓﺘﺮاﺿﯿﺔ ﻟﺬﻟﻚ ﻋﺎدة ﻻ ﻧﺤﺘﺎج إﻟﻲ ﺗﺤﺪﻳﺪ ﻟﻐﺔ اﻷﺳﻜﺮﺑﺖ إﻟﻲ ﺟﺎﻓﺎ
ﺳﻜﺮﺑﺖ ﻛﻤﺎ ﻳﻠﻲ
7
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
><SCRIPT
// ﻛﻤﺎ ﺗﺮي ﻻ ﻧﺤﺘﺎج ﻟﺘﺤﺪﯾﺪ ﻟﻐﺔ اﻷﺳﻜﺮﺑﺖ
// ﻫﻨ ﺎ ﯾﺘﻢ ﻛﺘﺎﺑﺔ ﻛﻮد اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ
></SCRIPT
وﻳﺘﻢ وﺿﻊ اﻟﻜﻮد اﻟﺨﺎص ﺑﻠﻐﺔ اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ ﺑﯿﻦ اﻟﻮﺳﻤﯿﻦ > <Scriptو > </Scriptﻛﻤﺎ ﻳﻠﻲ
>"<SCRIPT LANGUAGE="JavaScript
<!--
;)"document.write("Hello World
>//--
></SCRIPT
أذا ﻛﻞ ﻣﺎ ﻧﺤﺘﺎﺟﻪ اﻷن ﻣﻌﺮﻓﺔ ﻛﯿﻒ ﻳﺘﻢ ﻛﺘﺎﺑﺔ ﻛﻮد اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ ﻧﻌﻢ ھﺬا ﺻﺤﯿﺢ وﻟﻜﻦ ﺗﻤﮫﻞ ﻗﻠﯿﻞ •
وﻓﻜﺮ ﻣﻌﻲ ﻣﺎذا ﻳﺤﺪث ﻟﻮ ﻛﺎن اﻟﻤﺘﺼﻔﺢ اﻟﻤﺴﺘﺨﺪم ﻟﻔﺘﺢ اﻟﻤﻠﻒ ﻻ ﻳﺪﻋﻢ ﻟﻐﺔ اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ ؟
أﻋﺘﻘﺪ أﻧﻚ ﺳﻮف ﺗﻘﻮل ﺑﻜﻞ ﺑﺴﺎﻃﺔ أن اﻟﻜﻮد اﻟﻤﻜﺘﻮب ﺑﮫﺬه اﻟﻠﻐﺔ ﻟﻦ ﻳﻌﻤﻞ وھﺬا اﻟﻘﻮل ﺻﺤﯿﺢ
ﻟﻜﻦ ﺳﻮف ﻳﻨﺘﻈﺮك ﻣﺎ ھﻮ أﺳﻮء ﻣﻦ ھﺬا أﻻ وھﻮ ﻇﮫﻮر ﻛﻮد اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ ﺑﺪاﺧﻞ ﻣﺤﺘﻮﻳﺎت اﻟﺼﻔﺤﺔ
ﻛﻤﺎ ﺑﺎﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ
<!--ﻛﻤﺎ ﻳﻠﻲ ﻟﻜﻦ ﻻ ﺗﺤﺰن ﻳﻤﻜﻨﻚ إﺧﻔﺎء ﻇﮫﻮر ﻛﻮد اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ ﺑﻮﺿﻊ اﻟﻜﻮد ﺑﯿﻦ >//--
<!--
;)"document.write("Hello World
>//--
8
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
اﻷن ﺣﺎن اﻟﻮﻗﺖ ﻟﻤﻌﺮﻓﺔ أول أﻣﺮ ﻓﻲ ﻟﻐﺔ اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ وھﻮ •
;)"document.write("Hello World
:document.writeﻳﻤﻜﻨﻨﺎ ھﺬا اﻷﻣﺮ ﻣﻦ ﻛﺘﺎﺑﺔ ﻧﺺ ﻓﻲ اﻟﻤﺘﺼﻔﺢ وﺑﺎﻟﺘﺎﻟﻲ ﺳﻮف ﻳﺘﻢ ﻛﺘﺎﺑﺔ اﻟﻨﺺ
Hello Worldﻣﻊ ﻣﻼﺣﻈﺔ وﺿﻊ اﻟﻨﺺ اﻟﻤﺮاد ﻛﺘﺎﺑﺘﺔ ﺑﯿﻦ ﻋﻼﻣﺘﯿﻦ ﺗﻨﺼﯿﺺ ﻛﻤﺎ ﻳﻠﻲ
;)"document.write("Hello World
9
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
ﺍﻟﻔﺼﻞ ﺍﻟﺜﺎﻧﻲ
ﺃﺳﺎﺳﻴﺎﺕ ﻟﻐﺔ ﺍﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ
10
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
ﻛﻤﺎ رأﻳﻨﺎ ﺳﺎﺑﻘﺎ ﻓﻲ ﻣﺜﺎل Hello Worldأن ﻛﻮد اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ ﻏﺎﻟﺒﺎ ﻣﺎ ﻳﺘﻢ إدراﺟﻪ ﺑﯿﻦ ﻛﻮد اﻟﮫﺘﻤﻞ
وﻳﺘﻢ ھﺬا اﻹدراج ﻋﻦ ﻃﺮﻳﻖ :
.١إدراج داﺧﻠﻲ
.٢إدراج ﺧﺎرﺟﻲ
><Body></Body
></HTML
><Body
><script
<!--
;)"document.write("hello world
>//--
></script
></Body
></HTML
<BODY>
<SCRIPT LANGUAGE="JavaScript">
<!--
document.write(" ﻣﺮﺣﺒﺎ ﺑﻚ ﻓﻲ وﺳﻢ Body");
//-->
</SCRIPT>
</BODY>
</HTML>
12
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
ﻳﺘﻢ إﺳﺘﺒﺪال TagNameﺑـﺎﺳﻢ اﻟﻮﺳﻢ اﻟﻤﺮاد وﻟﯿﻜﻦ ﻋﻠﻲ ﺳﺒﯿﻞ اﻟﻤﺜﺎل Span
وﻳﺘﻢ إﺳﺘﺒﺪال eventﺑـﺎﺳﻢ اﻟﺤﺪث اﻟﻤﻄﻠﻮب وﻟﯿﻜﻦ ﻋﻠﻲ ﺳﺒﯿﻞ اﻟﻤﺜﺎل onclick
ﺛﻢ ﻳﺘﻢ وﺿﻊ اﻟﻜﻮد داﺧﻞ ھﺬا اﻟﺤﺪث
وھﺬا اﻟﻨﻮع ﻣﻦ إدراج ﻛﻮد اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ ﺳﻮف ﻧﺘﻨﺎوﻟﻪ ﻓﻲ اﻟﺠﺰء اﻟﺜﺎﻧﻲ ﻣﻦ اﻟﻜﺘﺎب ﺑﺸﻜﻞ ﻣﻔﺼﻞ
وﻟﻜﻦ دﻋﻨﺎ ﻧﺮي ﻣﺜﺎل ﺳﺮﻳﻊ ﻳﻮﺿﺢ اﻟﻄﺮﻳﻘﺔ ﻛﻤﺎ ﻳﻠﻲ
><HTML
><HEAD
><TITLE إدراج اﻟﻜﻮد داﺧﻞ اﻷوﺳﻤﺔ ></TITLE
></HEAD
><Body
ﺑﺎﻟﺪاﺧﻞ'(<Span onclick="document.write ﻗﻢ ﺑﺎﻟﻀﻐﻂ ﻋﻠﻲ ﻫﺬا اﻟﻨﺺ >")'ﻧﺤﻦ اﻷن ></Span
></Body
></HTML
ﺗﻢ إﺳﺘﺨﺪام اﻟﺤﺪث ) onclickاي ﻋﻨﺪ اﻟﻀﻐﻂ ﻋﻠﻲ ﻣﺤﺘﻮﻳﺎت اﻟﻮﺳﻢ اﻟﻤﺨﺘﺎر وھﻮ ھﻨﺎ (Spanﻛﻤﺎ ﻳﻠﻲ
ﺑﺎﻟﺪاﺧﻞ'(<Span onclick="document.write ﻗﻢ ﺑﺎﻟﻀﻐﻂ ﻋﻠﻲ ﻫﺬا اﻟﻨﺺ >")'ﻧﺤﻦ اﻷن ></Span
ﻓﻌﻨﺪ اﻟﻀﻐﻂ ﻋﻠﻲ ﻣﺤﺘﻮﻳﺎت اﻟﻮﺳﻢ > <Spanﺳﻮف ﻳﺘﻢ ﺗﻨﻘﯿﺬ اﻟﻜﻮد اﻟﺘﺎﻟﻲ
13
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
ﺑﺎﻟﺪاﺧﻞ'(<Span onclick="document.write ﻗﻢ ﺑﺎﻟﻀﻐﻂ ﻋﻠﻲ ﻫﺬا اﻟﻨﺺ >")'ﻧﺤﻦ اﻷن ></Span
ExternalEmbed.htm
><HTML
><Head
><SCRIPT LANGUAGE="JavaScript" src="outerScript.js"></SCRIPT
></Head
><Body
إدراج ﺧﺎرﺟﻲ
></Body
></HTML
outerScript.js
اﻟﻤﺪرج"(document.write ;)"ﻫﺬا ﻧﺺ ﺧﺎرﺟﻲ ﻣﻦ اﻟﻤﻠﻒ
;)">document.write("<br
14
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
اﻟﺘﻌﻠﯿﻘﺎت )(Comments
ﺗﺨﯿﻞ ﻣﻌﻲ أﻧﻚ ﻗﻤﺖ ﺑﻜﺘﺎﺑﺔ ﻛﻮد ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ ﻣﻌﻘﺪ وﻃﻮﻳﻞ )ﻣﺜﻼ ﺣﻮاﻟﻲ ٢٠٠٠ﺳﻄﺮ( ﻓﻲ ﻣﺜﻞ ھﺬه اﻟﺤﺎﻻت ﺳﻮف
ﺗﻮا ﺟﻪ اﻟﺘﺎﻟﻲ :
• ﺻﻌﻮﺑﺔ ﻗﺮاءة اﻟﻜﻮد
• ﺻﻌﻮﺑﺔ ﺗﺼﺤﯿﺢ اﻷﺧﻄﺎء Debug
><HTML
><HEAD
>"<SCRIPT LANGUAGE="JavaScript
<!--
// إﻇﻬﺎر رﺳﺎﻟﺔ ﺗﺮﺣﯿﺐ ﻟﻠﻤﺴﺘﺨﺪم
ﺑﻜﻢ"(document.write ;)"ﻣﺮﺣﺒﺎ
;)">document.write("<p // ﻃﺒﺎﻋﺔ ﺳﻄﺮ ﻓﺎرغ
>//--
></SCRIPT
></HEAD
></HTML
><HTML
><HEAD
>"<SCRIPT LANGUAGE="JavaScript
<!--
*/
إﻇﻬﺎر رﺳ ﺎﻟﺔ ﺗﺮﺣﯿﺐ ﻟﻠﻤﺴﺘﺨﺪم
ﺛﻢ
ﻃﺒﺎﻋﺔ ﺳﻄﺮ ﻓﺎرغ
*/
ﺑﻜﻢ"(document.write ;)"ﻣﺮﺣﺒﺎ
;)">document.write("<p */ ﻃﺒﺎﻋﺔ ﺳﻄﺮ ﻓﺎرغ */
>//--
></SCRIPT
></HEAD
></HTML
15
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
><HTML
><HEAD
>"<SCRIPT LANGUAGE="JavaScript
<!--
*/
إﻇﻬﺎر رﺳﺎﻟﺔ ﺗﺮﺣﯿﺐ ﻟﻠﻤﺴﺘﺨﺪم
ﺛﻢ
ﻃﺒﺎﻋﺔ ﺳﻄﺮ ﻓﺎرغ
*/
ﺑﻜﻢ"(document.write ;)"ﻣﺮﺣﺒﺎ
;)">document.write("<p
اﻟﻠﻘﺎء"(// document.write ;)" إﻟﻲ
>//--
></SCRIPT
></HEAD
></HTML
16
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
><HTML
><HEAD
>"<SCRIPT LANGUAGE="JavaScript
<!--
*/
إﻇﻬﺎر رﺳﺎﻟﺔ ﺗﺮﺣﯿﺐ ﻟﻠﻤﺴﺘﺨﺪم
ﺛﻢ
*/ﻃﺒﺎﻋﺔ ﺳﻄﺮ ﻓﺎرغ */
*/
ﺑﻜﻢ"(document.write ;)"ﻣﺮﺣﺒﺎ
;)">document.write("<p
>//--
></SCRIPT
></HEAD
></HTML
*/
إﻇﻬﺎر رﺳﺎﻟﺔ ﺗﺮﺣﯿﺐ ﻟﻠﻤﺴﺘﺨﺪم
ﺛﻢ
*/ﻃﺒﺎﻋﺔ ﺳﻄﺮ ﻓﺎرغ */
*/
*/
إﻇﻬﺎر رﺳﺎﻟﺔ ﺗﺮﺣﯿﺐ ﻟﻠﻤﺴﺘﺨﺪم
ﺛﻢ
ﻃﺒﺎﻋﺔ ﺳﻄﺮ ﻓﺎرغ */
*/ﺗﺪاﺧﻞ ﺟﺪﯾﺪ */
*/
*/
17
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
ﺗﻮﻓﺮ ﻟﻨﺎ اي ﻟﻐﺔ ﺑﺮﻣﺠﺔ ﻃﺮق ﻹدﺧﺎل وإﺧﺮاج اﻟﺒﯿﺎﻧﺎت وھﻲ ﻣﻦ اﻟﻨﻘﺎط اﻟﮫﺎﻣﺔ اﻟﺘﻲ ﺗﻌﻄﻲ ﺑﺮﻧﺎﻣﺠﻚ ﺗﻔﺎﻋﻞ ﻣﻊ
اﻟﻤﺴﺘﺨﺪﻣﯿﻦ ﻟﺒﺮﻧﺎﻣﺠﻚ
وﺳﻮف ﻧﺘﻨﺎول ﻓﻲ ھﺬا اﻟﺠﺰء اﻟﻄﺮق اﻟﻤﺨﺘﻠﻔﺔ ﻹﺧﺮاج وإدﺧﺎل اﻟﺒﯿﺎﻧﺎت .
ﻋﻨﺪﻣﺎ ﻳﻘﺎل أن ﻟﻐﺔ اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ ﺗﻮﻓﺮ ﻟﻨﺎ ﻃﺮق ﻹﺧﺮاج اﻟﺒﯿﺎﻧﺎت ﻧﻌﻨﻲ ﺑﺬﻟﻚ أن ﻟﻐﺔ اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ ﺗﻮﻓﺮ ﻟﻚ ﺑﻌﺾ
اﻷواﻣﺮ اﻟﺨﺎﺻﺔ ﺑﮫﺎ اﻟﺘﻲ ﺗﻤﻜﻨﻚ ﻣﻦ إﻇﮫﺎر رﺳﺎﺋﻞ ﺗﻈﮫﺮ ﻣﻦ ﺧﻼل وﺣﺪات اﻹﺧﺮاج ﺑﺠﮫﺎز اﻟﻜﻤﺒﯿﻮﺗﺮ ) ﻣﺜﻞ اﻟﺸﺎﺷﺔ
واﻟﻄﺎﺑﻌﺔ ( وﺳﻮف ﻧﺘﻨﺎول ھﺬة اﻟﻄﺮق اﻟﻤﺨﺘﻠﻔﺔ .
- ١اﻟﻄﺮﯾﻘﺔ : alert
ﺗﻘﻮم ﺑﺈﻇﮫﺎر رﺳﺎﻟﺔ إﻟﻲ اﻟﻤﺴﺘﺨﺪم . •
ﺗﻌﺘﺒﺮ إﺣﺪي اﻟﻮﻇﺎﺋﻒ اﻟﺘﺎﺑﻌﺔ ﻟﻠﻜﺎﺋﻦ ،windowﻛﻤﺎ ﺳﻨﺮي ﻻﺣﻘﺎ •
ﻃﺮﻳﻘﺔ إﺳﺘﺨﺪاﻣﮫﺎ : •
أو window.alertﻛﻼھﻤﺎ ﺳﻮف ﻳﺆدي إﻟﻲ ﻧﻔﺲ اﻟﻨﺘﯿﺠﺔ ﺛﻢ ﻳﺘﻢ ﺗﻤﺮﻳﺮ اﻟﺮﺳﺎﻟﺔ اﻟﻤﺮاد إﻇﻬﺎرﻫﺎ ﻳﺘﻢ ﻛﺘﺎﺑﺔ اﻷﻣﺮ alert
ﺑﯿﻦ ﻋﻼﻣﺘﯿﻦ ﺗﻨﺼﯿﺺ ""
><HTML
><Title اﻟﻄﺮﯾﻘﺔ >alert </Title
><HEAD
>"<SCRIPT LANGUAGE="JavaScript
<!--
"(alert ;)"ﻣﻦ ﻓﻀﻠﻚ ﯾﺠﺐ إدﺧﺎل ﺑﯿﺎﻧﺎت ﺻﺤﯿﺤﺔ
>//--
></SCRIPT
></HEAD
></HTML
18
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
- ٢اﻟﻄﺮﯾﻘﺔ : write
ﺗﻘﻮم ﺑﻜﻨﺎﺑﺔ ﻧﺺ ﻓﻲ اﻟﺼﻔﺤﺔ ﻟﻠﻤﺴﺘﺨﺪم . •
ﺗﻌﺘﺒﺮ إﺣﺪي اﻟﻮﻇﺎﺋﻒ اﻟﺘﺎﺑﻌﺔ ﻟﻠﻜﺎﺋﻦ ،documentﻛﻤﺎ ﺳﻨﺮي ﻻﺣﻘﺎ •
ﻃﺮﻳﻘﺔ إﺳﺘﺨﺪاﻣﮫﺎ : •
أﻳﻀﺎ ﻳﺘﻢ ﺗﻤﺮﻳﺮ اﻟﺮﺳﺎﻟﺔ اﻟﻤﺮاد ﻛﺘﺒﺎﺗﮫﺎ ﺑﯿﻦ ﻋﻼﻣﺘﯿﻦ ﺗﻨﺼﯿﺺ "" وﺗﻜﻮن ھﺬة اﻟﺮﺳﺎﻟﺔ إﻣﺎ ﻧﺺ ﺑﺴﯿﻂ plain textأو ﻧﺺ
ھﺘﻤﻞ HTML text
ﻳﺠﺐ ﻣﻼﺣﻈﺔ أن ﻟﻐﺔ اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ ﻟﻐﺔ ﺣﺴﺎﺳﺔ ﻟﺤﺎﻟﺔ اﻟﺤﺮوف ﻟﺬﻟﻚ ﻳﻜﺘﺐ اﻷﻣﺮ ﻛﻤﺎ ﻳﻠﻲ writeﺟﻤﯿﻊ ﺣﺮوﻓﻪ
ﺻﻐﯿﺮة )(small letters
19
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
><HTML
><Title اﻟﻄﺮﯾﻘﺔ >write </Title
><HEAD
>"<SCRIPT LANGUAGE="JavaScript
<!--
ﻣﻮﻗﻌﻨﺎ"(document.write ;)"ﻣﺮﺣﺒﺎ ﺑﻚ ﻓﻲ
>//--
></SCRIPT
></HEAD
></HTML
20
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
><HTML
><Title اﻟﻄﺮﯾﻘﺔ >write </Title
><HEAD
>"<SCRIPT LANGUAGE="JavaScript
<!--
اﻟﺤﺬف>document.write("<Font Color=red ;)"> </Fontﻫﻞ أﻧﺖ ﻣﺘﺄﻛﺪ ﻣﻦ إﺗﻤﺎم ﻋﻤﻠﯿﺔ
;)">document.write ("<P
;)" >ﻣﻮاﻓﻖ=document.write("<Center>" + "<Input type=button value
ﻣﻮاﻓﻖ'=document.write("<Input type=button value ;)"> '></Centerﻏﯿﺮ
;)">document.write("</P
>//--
></SCRIPT
></HEAD
></HTML
21
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
ﺑﻌﺪ اﻟﺘﻌﺮف اﻟﺴﺮﻳﻊ ﻟﻌﻼﻣﺎت اﻟﮫﺮوب ﻛﯿﻒ ﻳﻤﻜﻨﻨﺎ ﺣﻞ ﻣﺸﻜﻠﺔ ﻛﺘﺎﺑﺔ اﻟﻨﺺ اﻟﺴﺎﺑﻖ )ھﻞ ھﻨﺎك "ﻣﺸﻜﻠﺔ" ﻳﺎ رﺟﻞ ؟ (
ﺑﻜﻞ ﻳﺴﺮ ﻳﺘﻢ إﺳﺘﺒﺪال اي ﻋﻼﻣﺔ ﺗﻨﺼﯿﺺ )"( ﺑﻲ ﻋﻼﻣﺔ اﻟﮫﺮوب )"\( وﻳﻜﻮن اﻟﻨﺺ ﻛﺎﻟﺘﺎﻟﻲ
)ﻫﻞ ﻫﻨﺎك \"ﻣﺸﻜﻠﺔ\" ﯾﺎ رﺟﻞ ؟ (
22
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
><HTML
><Title اﻟﻄﺮﯾﻘﺔ write و >alert </Title
><HEAD
>"<SCRIPT LANGUAGE="JavaScript
<!--
ﻗﺪ"(alert " + "\r\n" +ﻧﺘﻤﻨﺎ ﻟﻚ ﯾﺎ ﻗﺎرﺋﻨﺎ \" اﻟﻌﺰﯾﺰ \" أن ﺗﻜﻮن
;)" ﺗﻌﻠﻤﺖ ﻣﺎ ﺳﺒﻖ ﻣﻦ ﻗﻮل وان ﺗﺤﺮص ﻋﻠﻲ ﻣﺎ ﻫﻮ أت "
23
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
ﻣﻼﺣﻈﺔ :
ﻟﻜﺘﺎﺑﺔ ﺳﻄﺮ ﺟﺪﯾﺪ
ﺑﺎﻟﻄﺮﯾﻘﺔ : alertﻗﻤﻨﺎ ﺑﺈﺳﺘﺨﺪام ﻋﻼﻣﺎت اﻟﻬﺮوب \r\nﻟﻌﻤﻞ ﺳﻄﺮ ﺟﺪﯾﺪ
ﺑﺎﻟﻄﺮﯾﻘﺔ :writeﻗﻤﻨﺎ ﺑﺈﺳﺘﺨﺪام اﻟﻮﺳﻢ > <brﺣﺘﻲ ﻧﻨﻤﻜﻦ ﻣﻦ ﻛﺘﺎﺑﺔ ﺳﻄﺮ ﺟﺪﯾﺪ
writeln
• ﺗﻘﻮم ﺑﻜﻨﺎﺑﺔ ﻧﺺ ﻓﻲ اﻟﺼﻔﺤﺔ ﻟﻠﻤﺴﺘﺨﺪم ﺑﺎﻹﺿﺎﻓﺔ إﻟﻲ أﻧﻬﺎ ﺗﺤﺪث ﺳﻄﺮ ﺟﺪﯾﺪ ﻗﺒﻞ ﻛﺘﺎﺑﺔ اﻟﻨﺺ.
ﺗﻌﺘﺒﺮ إﺣﺪي اﻟﻮﻇﺎﺋﻒ اﻟﺘﺎﺑﻌﺔ ﻟﻠﻜﺎﺋﻦ ،documentﻛﻤﺎ ﺳﻨﺮي ﻻﺣﻘﺎ •
ﻃﺮﻳﻘﺔ إﺳﺘﺨﺪاﻣﮫﺎ : •
أﻳﻀﺎ ﻳﺘﻢ ﺗﻤﺮﻳﺮ اﻟﺮﺳﺎﻟﺔ اﻟﻤﺮاد ﻛﺘﺎﺑﺘﮫﺎ ﺑﯿﻦ ﻋﻼﻣﺘﯿﻦ ﺗﻨﺼﯿﺺ "" وﺗﻜﻮن ھﺬة اﻟﺮﺳﺎﻟﺔ إﻣﺎ ﻧﺺ ﺑﺴﯿﻂ plain textأو ﻧﺺ
ھﺘﻤﻞ HTML text
><HTML dir=rtl
> writeln </Titleاﻟﻄﺮﯾﻘﺔ ><Title
><HEAD
>"<SCRIPT LANGUAGE="JavaScript
<!--
ﻣﻮﻗﻌﻨﺎ"(document.write ;)" ﻣﺮﺣﺒﺎ ﺑﻚ ﻓﻲ
ﺟﺪﯾﺪ"(document.writeln ;)"ﻧﺺ ﺟﺪﯾﺪ ﻛﻤﺎ ﺗﺮي وﻟﻜﻦ ﻟﻸﺳﻒ ﻟﯿﺲ ﻓﻲ ﺳﻄﺮ
>//--
></SCRIPT
></HEAD
></HTML
24
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
ﻛﻤﺎ ﺗﺮي ﻟﻢ ﻳﺘﻢ ﻋﻤﻞ ﺳﻄﺮ ﺟﺪﻳﺪ أﻗﻮل ﻟﻚ ﻧﻌﻢ أﻧﻨﺎ ﻻ ﻧﺮي ﺳﻄﺮ ﺟﺪﻳﺪ وﻟﻜﻦ ھﺬا ﻻ ﻳﻌﻨﻲ ﻋﺪم وﺟﻮدة ﺣﯿﺚ أﻧﻪ ﺗﻢ
ﻋﻤﻞ ﺗﻐﺬﻳﻪ ﻟﺴﻄﺮ ﺟﺪﻳﺪ ﺑﺎﺳﺘﺨﺪام \nوﻛﻤﺎ ﻧﻌﻠﻢ أن ﻟﻐﺔ اﻟﮫﺘﻤﻞ ﺗﺘﺠﺎھﻞ اﻟﻤﺴﺎﻓﺎت اﻟﺰاﺋﺪة واﻟﺴﻄﻮر اﻟﺠﺪﻳﺪة .
- ٣اﻟﻄﺮﯾﻘﺔ : print
• ﺗﻘﻮم ﺑﻄﺒﺎﻋﺔ اﻟﺼﻔﺤﺔ .
• ﺗﻌﺘﺒﺮ إﺣﺪي اﻟﻮﻇﺎﺋﻒ اﻟﺘﺎﺑﻌﺔ ﻟﻠﻜﺎﺋﻦ . window
• ﻃﺮﯾﻘﺔ إﺳﺘﺨﺪاﻣﻬﺎ :
;)(window.print
25
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
- ١اﻟﻄﺮﯾﻘﺔ : confirm
• ﺗﻘﻮم ﺑﺈﻇﻬﺎر رﺳﺎﻟﺔ ﻣﺜﻞ اﻟﻄﺮﯾﻘﺔ alertاﻟﺴﺎﺑﻘﺔ ﺑﺎﻹﺿﺎﻓﺔ إﻟﻲ أﻧﻬﺎ ﺗﻘﻮم ﺑﺈرﺟﺎع أﺣﺪي اﻟﻘﯿﻤﺘﯿﻦ
trueأو .false
• ﺗﻌﺘﺒﺮ إﺣﺪي اﻟﻮﻇﺎﺋﻒ اﻟﺘﺎﺑﻌﺔ ﻟﻠﻜﺎﺋﻦ . window
• ﻃﺮﯾﻘﺔ إﺳﺘﺨﺪاﻣﻬﺎ :
ﻳﺘﻢ ﻛﺘﺎﺑﺔ اﻷﻣﺮ confirmأو window.confirmﻛﻼھﻤﺎ ﺳﻮف ﻳﺆدي إﻟﻲ ﻧﻔﺲ اﻟﻨﺘﯿﺠﺔ ﺛﻢ ﻳﺘﻢ ﺗﻤﺮﻳﺮ اﻟﺮﺳﺎﻟﺔ اﻟﻤﺮاد
إﻇﮫﺎرھﺎ ﺑﯿﻦ ﻋﻼﻣﺘﯿﻦ ﺗﻨﺼﯿﺺ ""
ﺛﻢ ﻳﺘﻢ إﺳﺘﻘﺒﺎل اﻟﻘﯿﻤﺔ اﻟﺮاﺟﻌﺔ ﻣﻦ اﻹﺧﺘﯿﺎر ﻓﻲ ﻣﺘﻐﯿﺮ ) ﺳﻮف ﻳﺘﻢ ﺷﺮح اﻟﻤﺘﻐﯿﺮات ﻓﯿﻤﺎ ﺑﻌﺪ (
><HTML
><Title اﻟﻄﺮﯾﻘﺔ >confirm </Title
><HEAD
>"<SCRIPT LANGUAGE="JavaScript
<!--
"(confirm ;)"ﻣﻦ ﻓﻀﻠﻚ ﻫﻞ أﻧﺖ ﻣﺘﺄﻛﺪ ﻣﻦ إﺗﻤﺎم ﻋﻤﻠﯿﺔ ﺣﺬف ﻫﺬا اﻟﻌﻤﯿﻞ ؟
>//--
></SCRIPT
></HEAD
></HTML
26
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
ﻛﻤﺎ ﺗﺮي ﻇﮫﻮر اﻟﺮﺳﺎﻟﺔ وﻟﻜﻦ ﺑﻌﺪ اﻟﻀﻐﻂ ﻋﻠﻲ إ ﺣﺪي اﻟﺰرارﻳﻦ cancelأو okﻟﻢ ﻧﺘﻌﺮف أﻳﮫﻤﺎ ﺗﻢ اﻟﻀﻐﻂ ﻋﻠﯿﻪ ،وﺣﺘﻲ
ﻧﺘﻌﺮ ف ﻋﻠﻲ اﻟﻘﯿﻤﺔ اﻟﺮاﺟﻌﺔ ﻣﻦ اﻹﺧﺘﯿﺎر ﻧﺤﺘﺎج إﻟﻲ :
-ﺗﺨﺰﻳﻦ اﻟﻘﯿﻤﺔ اﻟﺮاﺟﻌﺔ ﻓﻲ ﻣﺘﻐﯿﺮ ﺛﻢ ﻧﺤﺪد ﻗﯿﻤﺔ ھﺬا اﻟﻤﺘﻐﯿﺮ ﻓﺈذا ﻛﺎﻧﺖ ﻗﯿﻤﺘﻪ trueﻓﮫﺬا ﻳﻌﻨﻲ أن اﻟﻤﺴﺘﺨﺪم ﻗﺪ
ﺿﻐﻂ اﻟﺰر ، okوإذا ﻛﺎﻧﺖ ﻗﯿﻤﺘﻪ falseﻓﮫﺬا ﻳﻌﻨﻲ أن اﻟﻤﺴﺘﺨﺪم ﻗﺪ ﺿﻐﻂ زر cancelوﺳﻮف ﻧﺘﺤﺪث ﻋﻠﻲ ھﺬا
اﻹﺳﻠﻮب ﻓﯿﻤﺎ ﺑﻌﺪ ﻋﻨﺪ اﻟﺤﺪﻳﺚ ﻋﻦ اﻟﻤﺘﻐﯿﺮات.
-أو ﻧﻘﻮم ﺑﺈﺳﺘﺨﺪام اﻟﻘﯿﻤﺔ اﻟﺮاﺟﻌﺔ ﺑﺪون ﺗﺨﺰﻳﻨﮫﺎ ) ﻣﻦ ﻋﻠﻲ اﻟﻄﺎﺋﺮ ﻛﻤﺎ ﻳﻘﺎل ( ﻛﻤﺎ ﺳﻮف ﻳﺘﻀﺢ ﻓﻲ اﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ :
ﺣﯿﺚ ﺳﻮف ﻧﻘﻮم ﺑﻄﺒﺎﻋﺔ اﻟﻘﯿﻤﺔ اﻟﺮاﺟﻌﺔ ﻣﻦ اﻹﺧﺘﯿﺎر ﺑﻮاﺳﻄﺔ اﻟﻄﺮﻳﻘﺔ alertﻛﻤﺎ ﻳﻠﻲ :
><HTML
><Title اﻟﻄﺮﯾﻘﺔ >confirm </Title
><HEAD
>"<SCRIPT LANGUAGE="JavaScript
<!--
"(alert( confirm )"ﻣﻦ ﻓﻀﻠﻚ ﻫﻞ أﻧﺖ ﻣﺘﺄﻛﺪ ﻣﻦ إﺗﻤﺎم ﻋﻤﻠﯿﺔ ﺣﺬف ﻫﺬا اﻟﻌﻤﯿﻞ ؟ ;)
>//--
></SCRIPT
></HEAD
></HTML
27
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
28
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
- ٢اﻟﻄﺮﯾﻘﺔ : prompt
• ﺗﻘﻮم ﺑﺈﻇﻬﺎر رﺳﺎﻟﺔ ﻣﺜﻞ اﻟﻄﺮﯾﻘﺔ confirmاﻟﺴﺎﺑﻘﺔ ﺑﺎﻹﺿﺎﻓﺔ إﻟﻲ أﻧﻬﺎ ﺗﻘﻮم ﺑﺈرﺟﺎع أﺣﺪي اﻟﻘﯿﻤﺘﯿﻦ
اﻟﻘﯿﻤﺔ اﻟﻤﺪﺧﻠﺔ ﻣﻦ ﺧﻼل اﻟﻤﺴﺘﺨﺪم أو اﻟﻘﯿﻤﺔ ) nullوﻫﻲ ﺗﻌﻨﻲ ﻻ ﺷﻲء(.
• ﺗﻌﺘﺒﺮ إﺣﺪي اﻟﻮﻇﺎﺋﻒ اﻟﺘﺎﺑﻌﺔ ﻟﻠﻜﺎﺋﻦ . window
• ﻃﺮﯾﻘﺔ إﺳﺘﺨﺪاﻣﻬﺎ :
ﻳﺘﻢ ﻛﺘﺎﺑﺔ اﻷﻣﺮ promptأو window.promptﻛﻼھﻤﺎ ﺳﻮف ﻳﺆدي إﻟﻲ ﻧﻔﺲ اﻟﻨﺘﯿﺠﺔ ﺛﻢ ﻳﺘﻢ ﺗﻤﺮﻳﺮ اﻟﺮﺳﺎﻟﺔ اﻟﻤﺮاد
إﻇﮫﺎرھﺎ ﺑﯿﻦ ﻋﻼﻣﺘﯿﻦ ﺗﻨﺼﯿﺺ "" ﺛﻢ ﺗﻤﺮر أو ﻻ ﺗﻤﺮر اﻟﻘﯿﻤﺔ اﻹﻓﺘﺮاﺿﯿﺔ ﻟﻠﻘﯿﻤﺔ اﻟﺮاﺟﻌﺔ وإذا ﻟﻢ ﺗﻤﺮر ﺳﻮف ﺗﺄﺧﺬ اﻟﻘﯿﻤﺔ
اﻹﻓﺘﺮاﺿﯿﺔ undefined
ﺛﻢ ﻳﺘﻢ إﺳﺘﻘﺒﺎل اﻟﻘﯿﻤﺔ اﻟﺮاﺟﻌﺔ ﻣﻦ اﻹﺧﺘﯿﺎر ﻓﻲ ﻣﺘﻐﯿﺮ ) ﺳﻮف ﻳﺘﻢ ﺷﺮح اﻟﻤﺘﻐﯿﺮات ﻓﯿﻤﺎ ﺑﻌﺪ ( أو إﻇﮫﺎرھﺎ ﻓﻲ ﺷﻜﻞ
رﺳﺎﻟﺔ ﻛﻤﺎ ﺳﺒﻖ اﻟﻘﻮل ﻓﻲ اﻟﻄﺮﻳﻘﺔ confirmﻛﻤﺎ ﺑﺎﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ
29
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
><HTML
><Title اﻟﻄﺮﯾﻘﺔ >prompt </Title
><HEAD
>"<SCRIPT LANGUAGE="JavaScript
<!--
"(alert( prompt ",ﻣﺎ ﻫﻮ اﺳﻤﻚ ؟ اﺳﻤﻚ " )"أدﺧﻞ ﻫﻨﺎ ;)
>//--
></SCRIPT
></HEAD
></HTML
ﺛﻢ ﻧﻘﻮم ﺑﺈدﺧﺎل اﻻﺳﻢ وﻟﯿﻜﻦ اﻟﺘﺎﻟﻲ "اﻟﺤﺴﯿﻦ ﻣﺤﻤﺪ" ﻛﺎﻟﺘﺎﻟﻲ :
30
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
31
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
32
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
ﺍﻟﻔﺼﻞ ﺍﻟﺜﺎﻟﺚ
ﺍﻟﻤﺘﻐﻴﺮﺍﺕ
33
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
اﻟﻤﺘﻐﯿﺮات Variables
ھﺐ أﻧﻨﻲ أﻋﻄﯿﺘﻚ ﻛﻤﯿﺔ ﻣﻦ اﻟﻤﺎء ﻓﻤﺎ وﺳﯿﻠﺔ ﺗﺨﺰﻳﻨﻚ ﻟﮫﺬة اﻟﻜﻤﯿﺔ ،رﺑﻤﺎ ﻗﻠﺖ ﻟﻲ ﺳﻮف أﺿﻌﮫﺎ ﻓﻲ ﻛﻮب ﺻﻐﯿﺮ أو إﻧﺎء
أو أي ﻣﺤﺘﻮي أﻛﺒﺮ ،وﺑﮫﺬا أﻗﻮل ﻟﻚ أﻧﻚ ﻧﺠﺤﺖ ﻓﻲ ﻋﻤﻠﯿﺔ ﺗﺨﺰﻳﻦ اﻟﻤﯿﺎه وﻟﻜﻦ ﻣﺎ ﻓﺎﺋﺪة ھﺬة اﻟﻌﻤﻠﯿﺔ ،رﺑﻤﺎ ﺗﻘﻮل ﻟﻲ
ﺣﺘﻲ أﺳﺘﺨﺪﻣﮫﺎ ﻋﻨﺪ ﺣﺎﺟﺘﻲ ﻟﮫﺎ ﻓﻲ اﻟﻤﺴﺘﻘﺒﻞ اﻟﻘﺮﻳﺐ أو اﻟﺒﻌﯿﺪ ﻧﻌﻢ ﻧﻌﻤﺎ اﻟﺮأي ﻣﺎ ﻗﻠﺖ .
ﻟﻜﻦ ﻣﺎ ﻋﻼﻗﺔ ھﺬا ﺑﻤﻮﺿﻮﻋﻨﺎ اﻟﻤﺘﻐﯿﺮات ،ﺑﻜﻞ ﺑﺴﺎﻃﺔ ﻛﻤﺎ أﺣﺘﺠﻨﺎ إﻟﻲ ﺗﺨﺰﻳﻦ اﻟﻤﺎء ﻓﻲ ﻣ ﺤﺘﻮي ﻳﺤﻔﻈﻪ ﺣﺘﻲ ﻧﺘﻤﻜﻦ
ﻣﻦ إﺳﺘﺨﺪاﻣﻪ ﻋﻨﺪ اﻟﺤﺎﺟﺔ إﻟﯿﻪ ،ﻓﺈﻧﻨﺎ أﻳﻀﺎ ﻓﻲ ﻋﺎﻟﻢ اﻟﻜﻤﺒﯿﻮﺗﺮ واﻟﺒﺮﻣﺠﺔ ﻧﺤﺘﺎج إﻟﻲ ﻋﻤﻠﯿﺔ ﺗﺨﺰﻳﻦ وﻟﻜﻦ ﻟﯿﺲ ﻟﻠﻤﺎء
وﻟﻜﻦ ﺗﺨﺰﻳﻦ ﻟﻠﺒﯿﺎﻧﺎت .
ﻓﮫﺐ أﻧﻨﻲ أﻋﻄﯿﺘﻚ اﻟﻨﺺ اﻟﺘﺎﻟﻲ اﻟﺤﻤﺪ ﷲ اﻟﻌﻠﻲ اﻟﻌﻈﯿﻢ وﻗﻠﺖ ﻟﻚ ﻛﯿﻒ ﻳﻤﻜﻨﻚ ﺗﺨﺰﻳﻦ ھﺬا اﻟﻨﺺ رﺑﻤﺎ أﺳﺮﻋﺖ
ﺑﺎﻟﻘﻮل ﻟﻲ أﻧﻨﻲ ﺳﻮف أﻗﻮم ﺑﺤﻔﻆ ھﺬا اﻟﻨﺺ ﻓﻲ رأﺳﻲ وﺗﻜﻮن رأﺳﻚ ھﻨﺎ ھﻲ ﻣﺨﺰن اﻟﻨﺺ ،وﻟﻜﻦ إذا أردﻧﺎ ﺗﺨﺰﻳﻦ
اﻟﻨﺺ اﻟﺴﺎﺑﻖ ﻓﻲ ﺑﺮﻧﺎﻣﺠﻨﺎ ﺑﺸﻜﻞ ﻣﺆﻗﺖ ) اي ﺧﻼل ﻓﺘﺮة ﻋﻤﻞ اﻟﺒﺮﻧﺎﻣﺞ ﻓﻘﻂ وﻳﻨﺘﮫﻲ ﺗﺨﺰﻳﻨﮫﺎ ﻋﻨﺪ إﻧﺘﮫﺎء اﻟﺒﺮﻧﺎﻣﺞ (
ھﻨﺎ ﺳﻮف ﻧﺤﺘﺎج إﻟﻲ ﻣﺨﺰن ﻳﺘﻢ ﺣﻔﻆ ھﺬا اﻟﻨﺺ ﺑﻪ وﻏﺎﻟﺒﺎ ﻣﺎ ﻳﻜﻮن ﺟﺰء ﻣﻦ ذاﻛﺮة اﻟﺤﮫﺎز اﻟﻤﺆﻗﺘﺔ ،وﻳﺘﻢ إﻋﻄﺎء ھﺬا
اﻟﺠﺰء ﻣﻦ ذاﻛﺮة اﻟﺠﮫﺎز اﺳﻢ ﺧﺎص ﺣﺘﻲ ﻳﺘﻢ اﻟﺘﻌﺎﻣﻞ ﻣﻊ ھﺬا اﻟﺠﺰء .
ﻧﺨﻠﺺ ﻣﻤﺎ ﺳﺒﻖ إﻟﻲ أن اﻟﻤﺘﻐﯿﺮ ھﻮ ﺟﺰء ﻣﻦ ذاﻛﺮة اﻟﺠﮫﺎز ﻳﺘﻢ إﻋﻄﺎء اﺳﻢ ﻟﻪ ،ﻳﻌﺘﺒﺮ ﺑﻤﺜﺎﺑﺔ ﻣﺨﺰن ﻟﻠﺒﯿﺎﻧﺎت
ﺗﺨﺘﻠﻒ أﻧﻮاع اﻟﺒﯿﺎﻧﺎت ﻓﻤﺜﻼ ﻳﺴﺘﻄﯿﻊ اﻹﻧﺴﺎن إ دراك اﻟﺘﻤﯿﺰ ﺑﯿﻦ اﻟﺤﺮوف اﻷﺑﺠﺪﻳﺔ و اﻷرﻗﺎم وﺑﯿﻦ اﻟﻨﺼﻮص واﻟﻘﯿﻢ اﻟﻌﺪدﻳﺔ
وھﻜﺬا ،وأﻳﻀﺎ ﺗﻮﻓﺮ ﻟﻨﺎ ﻟﻐﺔ اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﺘﻤﯿﺰ ﺑﯿﻦ ٤أﻧﻮاع ﻣﻦ اﻟﺒﯿﺎﻧﺎت :
• اﻟﻨﺼﻮص String
• اﻟﻘﯿﻢ اﻟﻌﺪدﻳﺔ Number
• اﻟﺤﺎﻟﺔ اﻟﺒﻮﻟﯿﻨﯿﺔ ) ﺻﺢ أم ﺧﻄﺄ ( Boolean
• اﻟﻘﯿﻤﺔ ﻻ ﺷﺊ Null
ﻻﺣﻆ ﻣﻌﻲ اﻟﺘﺎﻟﻲ ﻛﻤﺎ ﻧﻌﻠﻢ أن ﺷﻜﻞ وﻃﺒﯿﻌﺔ ﺗﺮﻛﯿﺐ ﻣﺨﺎزن اﻟﻤﯿﺎه ﻳﺨﺘﻠﻒ ﻋﻦ ﺑﻨﯿﺔ ﻣﺨﺎزن اﻟﺒﺘﺮول ﻣﺜﻼ
وھﻜﺬا ﻳﺨﺘﻠﻒ ﻧﻮع اﻟﻤﺨﺰن ﺣﺴﺐ ﻃﺒﯿﻌﺔ وﻧﻮع اﻟﻤﺎدة اﻟﻤﺨﺰﻧﺔ ﺑﻪ .
وﻟﻜ ﻦ اﻟﻤﺘﻐﯿﺮات ﻓﻲ ﻟﻐﺔ اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ ) وھﻲ ﻣﺨﺎزن اﻟﺒﯿﺎﻧﺎت ( ﻻ ﺗﺨﺘﻠﻒ ﻓﻲ ﺑﻨﯿﺘﮫﺎ ﺑﺈﺧﺘﻼف ﻧﻮع اﻟﺒﯿﺎﻧﺎت اﻟﻤﺨﺰﻧﺔ
ﺑﮫﺎ ﻛﻤﺎ ھﻮ اﻟﺤﺎل ﺑﻠﻐﺔ اﻟﺠﺎﻓﺎ واﻟﺴﻲ اﻟﺘﻲ ﻳﺘﻤﯿﺰ ﻓﯿﮫﺎ ﻧﻮع اﻟﻤﺨﺰن ﺣﺴﺐ ﻧﻮع اﻟﺒﯿﺎﻧﺎت اﻟﻤﺨﺰﻧﺔ ﺑﻪ .
34
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
ﺗﺴﻤﯿﺔ اﻟﻤﺘﻐﯿﺮات ﺗﺨﻀﻊ ﻟﺸﺮوط أﺳﺎﺳﯿﺔ ﻳﺠﺐ ﺗﻮاﻓﺮھﺎ ﻟﯿﻌﻤﻞ اﻟﺒﺮﻧﺎﻣﺞ ﺑﺎﻟﺼﻮرة اﻟﺼﺤﯿﺤﺔ وھﻲ ﻛﺎﻟﺘﺎﻟﻲ :
اﻟﺨﺎﻧﺔ اﻷوﻟﻲ ﻣﻦ إﺳﻢ اﻟﻤﺘﻐﯿﺮ ﻻﺑﺪ أن ﺗﻜﻮن أﺣﺪ اﻷﺣﺮف اﻹﻧﺠﻠﯿﺰﻳﺔ ﺳﻮاءً ﺣﺮﻓﺎ ﻛﺒﯿﺮا أو ﺻﻐﯿﺮا ﻣﻊ ﻣﻼﺣﻈﺔ •
اﻟﻔﺮق ﺑﯿﻨﮫﻤﺎ ،وﻳﻤﻜﻦ اﻟﺒﺪء ﺑﻌﻼﻣﺔ _ أو ﻋﻼﻣﺔ ، $ﻣﻊ أﻧﻪ ﻻﻳﻨﺼﺢ ﺑﺈﺳﺘﺨﺪام اﻟﻌﻼﻣﺔ اﻷﺧﯿﺮة .
اﻷﺳﻤﺎء ﻻﻳﻤﻜﻦ أن ﺗﺤﻮي ﻣﺴﺎﻓﺎت ﺑﯿﻦ أﺣﺮﻓﮫﺎ ،ﻟﻜﻦ ﻳﻤﻜﻨﻚ إﺳﺘﺨﺪام اﻟﻌﻼﻣﺔ _ ﺑﺪل اﻟﻤﺴﺎﻓﺎت . •
ﻻﻳﻤﻜﻦ ﻷي إﺳﻢ أن ﻳﻤﺎﺛﻞ أﻳﺎ ﻣﻦ اﻟﻜﻠﻤﺎت اﻟﻤﺤﺠﻮزة وھﺬه اﻟﻘﺎﻋﺪة ﻋﺎﻣﺔ ﻟﺠﻤﯿﻊ ﻟﻐﺎت اﻟﺒﺮﻣﺠﺔ . •
ﺟﺮت اﻟﻌﺎدة ﻋﻨﺪ ﺗﺴﻤﯿﺔ اﻟﻤﺘﻐﯿﺮات ﻓﻲ اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ أﻧﻪ ﻻ ﻳﻔﻀﻞ إﺳﺘﺨﺪام اﻟﺤﺮف _ ﻟﻠﻔﺼﻞ ﺑﯿﻦ ﻣﻘﺎﻃﻊ اﻟﻜﻠﻤﺎت
وﻟﻜﻦ ﻳﺘﻢ دﻣﺞ اﻟﻤﻘﺎﻃﻊ ﻣﻊ ﺟﻌﻞ اﻟﺤﺮف اﻷول ﺻﻐﯿﺮ وأول ﺣﺮف ﻣﻦ اﻟﻤﻘﺎﻃﻊ اﻟﺘﺎﻟﯿﺔ ﻳﻜﻮن ذو ﺣﺮف ﻛﺒﯿﺮ ﻓﻌﻠﻲ ﺳﺒﯿﻞ
اﻟﻤﺜﺎل ﻋﻨﺪﻣﺎ ﻧﺮﻳﺪ ﺗﺴﻤﯿﺔ ﻣﺘﻐﯿﺮ ﻟﯿﻌﺒﺮ ﻋﻦ last nameﻻ ﻳﻔﻀﻞ ﺗﺴﻤﯿﺘﻪ ﻛﻤﺎ ﻳﻠﻲ :
Last_nameوﻟﻜﻦ ﻳﻔﻀﻞ ﺗﺴﻤﯿﺔ ﻛﻤﺎ ﻳﻠﻲ .lastName
ﻛﻤﺎ ﻧﻌﻠﻢ ﻓﺈن ﻟﻐﺔ اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ ﺗﻤﯿﺰ ﺑﯿﻦ ﺣﺎﻟﺔ اﻟﺤﺮوف اﻟﻜﺒﯿﺮة واﻟﺼﻐﯿﺮة ﻓﺈن اﻟﻤﺘﻐﯿﺮ
lastNameﻟﯿﺲ ﻣﺜﻞ اﻟﻤﺘﻐﯿﺮ . LastName
داﺋﻤﺎ ﺣﺎول أن ﺗﻜﻮن أﺳﻤﺎء اﻟﻤﺘﻐﯿﺮات ذات دﻻﻟﺔ ﺗﺒﺴﻂ ﻋﻠﯿﻚ ﻓﻲ اﻟﻤﺴﺘﻘﺒﻞ ﻋﻤﻠﯿﺔ اﻟﺘﻌﺪﻳﻞ ﻓﻲ اﻟﺒﺮﻧﺎﻣﺞ .
35
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
ﻛﻤﺎ ﻏﻠﻤﻨﺎ أن اﻟﻤﺘﻐﯿﺮات ھﻲ أﺳﻤﺎء ﻟﺤﺠﺰ أﻣﺎﻛﻦ ﻓﻲ ذاﻛﺮة اﻟﺠﮫﺎز ﻟﺤﻔﻆ اﻟﺒﯿﺎﻧﺎت اﻟﺘﻲ ﺗﺴﻨﺪ إﻟﯿﮫﺎ .وﻗﺒﻞ أن
ﺗﺴﺘﺨﺪم أﻳﺎ ﻣﻦ ھﺬه اﻟﻤﺘﻐﯿﺮات ﻻﺑﺪ ﻣﻦ اﻹﻓﺼﺎح ﻋﻨﮫﺎ ،وذﻟﻚ ﺑﺈﺳﺘﺨﺪام اﻷﻣﺮ var
;var firstName
وھﻜﺬا ،ﻛﻤﺎ أﻧﻪ ﻣﻦ اﻟﻤﻤﻜﻦ اﻹﻋﻼن ﻋﻦ أﻛﺜﺮ ﻣﻦ ﻣﺘﻐﯿﺮ ﻓﻲ ﺳﻄﺮ واﺣﺪ ،وھﺬا ﻣﺎﻻﻳﻤﻜﻨﻚ ﻋﻤﻠﻪ ﺑﻮاﺳﻄﺔ اﻟﻔﯿﺠﻮال
ﺑﯿﺴﻚ ﺳﻜﺮﺑﺖ ..
وأﺧﯿﺮاً ،ﻟﻤﺰﻳﺪ ﻣﻦ اﻟﺘﺒﯿﺴﻂ ،ﻳﻤﻜﻨﻨﺎ إﺳﻨﺎد اﻟﻘﯿﻢ اﻟﻰ ھﺬه اﻟﻤﺘﻐﯿﺮات أﺛﻨﺎء ﺗﻌﺮﻳﻔﮫﺎ واﻹﻓﺼﺎح ﻋﻨﮫﺎ ،ﻛﻤﺎ ﻳﻠﻲ:
ﺗﺬﻛﺮ أﻧﻪ إذا ﻟﻢ ﺗﻔﺼﺢ ﻋﻦ أي ﻣﺘﻐﯿﺮ ﻗﺒﻞ إﺳﺘﺨﺪاﻣﻪ ﻓﺈن ذﻟﻚ ﺳﯿﻮﻗﻒ ﻋﻤﻞ اﻟﺒﺮﻧﺎﻣﺞ ،وﻻﺗﻨﺴﻰ أن اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ ﻟﻐﺔ
ﺣﺴﺎﺳﺔ ﺗﺠﺎه اﻷﺣﺮف ﻛﻤﺎ ذﻛﺮﻧﺎ ﺳﺎﺑﻘﺎ ﻓـ xﻏﯿﺮ Xداﺋﻤﺎ ﺣﺘﻰ ﻓﻲ أواﻣﺮ اﻟﺠﺎﻓﺎ اﻟﺴﻜﺮﺑﺖ واﻟﻮﻇﺎﺋﻒ وﻣﺼﻄﻠﺤﺎﺗﮫﺎ
اﻟﻤﺤﺠﻮزة .
><HTML
><Title اﻟﻤﺘﻐﯿﺮات ></Title
><HEAD
>"<SCRIPT LANGUAGE="JavaScript
<!--
"(var username = prompt ",ﻣﺎ ﻫﻮ اﺳﻤﻚ ؟ اﺳﻤﻚ" ;)"أدﺧﻞ ﻫﻨﺎ
" (alert "ﻣﺮﺣﺒﺎ ﺑﻚ ﯾﺎ : ;) + username
>//--
></SCRIPT
></HEAD
></HTML
وﻳﻜﻮن اﻟﻨﺎﺗﺞ ﺑﻌﺪ إدﺧﺎل اﻷﺳﻢ ﺑﻘﯿﻤﺔ ﻣﺤﻤﺪ ﻛﻤﺎ ﻳﻠﻲ :
36
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
37
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
وﻛﻤﺎ ﻧﺮي ﻓﻘﺪ ﺗﻢ اﻹﻋﻼن ﻋﻦ ﻣﺘﻐﯿﺮ ﺑﺎﺳﻢ userNameﺛﻢ ﺧﺰن ﺑﻪ اﻟﻘﯿﻤﺔ اﻟﺮاﺟﻌﺔ ﻣﻦ اﻷﻣﺮ promptﻛﻤﺎ ﻳﻠﻲ
ﺛﻢ ﻗﻤﻨﺎ ﺑﻄﺒﺎﻋﺔ اﻟﻘﯿﻤﺔ اﻟﻤﺨﺰﻧﺔ ﺑﺎﻟﻤﺘﻐﯿﺮ userNameﻣﻀﺎﻓﺎ إﻟﯿﮫﺎ ﻧﺺ " ﻣﺮﺣﺒﺎ ﺑﻚ ﯾﺎ " :ﻛﻤﺎ ﻳﻠﻲ :
><HTML dir=rtl
> </Titleاﻟﻤﺘﻐﯿﺮات ><Title
><HEAD
>"<SCRIPT LANGUAGE="JavaScript
<!--
;var userage, username
38
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
وﻳﻜﻮن اﻟﻨﺎﺗﺞ ﺑﻌﺪ إدﺧﺎل اﻷﺳﻢ ﺑﻘﯿﻤﺔ ﻣﺤﻤﺪ ﻛﻤﺎ ﻳﻠﻲ :
39
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
40
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
اﻟﻜﻠﻤﺎت اﻟﻤﺤﺠﻮزة
وھﻲ أواﻣﺮ اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﺘﻲ ﻻﻳﻤﻜﻨﻚ ﻧﺴﺐ أي ﻣﺘﻐﯿﺮات إﻟﯿﮫﺎ ﻋﻠﻰ، أو ﻣﺼﻄﻠﺤﺎت اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺤﺠﻮزة
. ﻛﻤﺎ ﻓﻲ ﻛﻞ ﻟﻐﺎت اﻟﺒﺮﻣﺠﺔ اﻟﻤﻌﺮوﻓﺔ، اﻹﻃﻼق
وﺳﺘﺠﺪ ﺟﺪوﻻ ﻣﺒﯿﻨﺎ ﻟﮫﺎ. وإﻧﻤﺎ اﻹﻟﻤﺎم ﺑﮫﺎ، ﻃﺒﻌﺎ ﻻﻳﺠﺐ ﻋﻠﯿﻚ ﺣﻔﻈﮫﺎ ﻛﺎﻣﻠﺔ
break in true
continue int typeof
do labeled var
else new void
false null while
for return with
function switch
if this
41
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
ﺍﻟﻔﺼﻞ ﺍﻟﺮﺍﺑﻊ
ﺍﻟﻤﻌﺎﻣﻼﺕ
ﺳﻮف ﻧﻨﺎﻗﺶ إن ﺷﺎء اﷲ ﻓﻲ ﻫﺬا اﻟﻔﺼﻞ اﻟﻨﻘﺎط اﻟﺘﺎﻟﯿﺔ :
42
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
اﻟﻤﻌﺎﻣﻼت Operators
ﺗﺴﺘﺨﺪم ﻹﺟﺮاء اﻟﻌﻤﻠﯿﺎت اﻟﺮﻳﺎﺿﯿﺔ ﻣﻦ ﺟﻤﻊ وﻃﺮح وﺿﺮب وﻗﺴﻤﺔ وﺑﺎﻗﻲ اﻟﻘﺴﻤﺔ .
43
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
: +ﻛﻤﺎ ﺗﺴﺘﺨﺪم ﻹﺟﺮاء ﻋﻤﻠﯿﺎت اﻟﺠﻤﻊ اﻟﺮﻳﺎﺿﻲ ﺗﺴﺘﺨﺪم ﻟﺪﻣﺞ اﻟﻨﺼﻮص ﻛﻤﺎ ﻳﻠﻲ : •
ﻻﺣﻆ :
ﻋﻨﺪ ﺗﻌﯿﻦ ھﻞ اﻟﻄﺮﻓﯿﻦ ﻣﺘﺴﺎوﻳﺎن ﻳﻢ أﺳﺘﺨﺪام اﻟﺤﺮف "=" ﻣﺮﺗﯿﯿﻦ ﻣﺘﺘﺎﻟﯿﺘﯿ ﻦ ﻛﻤﺎ ﺑﺎﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ :
ﻣﺜﺎل :
44
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
ﺗﺴﺘﺨﺪ ﻹﺟﺮاء ﻣﻘﺎرﻧﺔ ﻣﻨﻄﻘﯿﺔ ،وﻏﺎﻟﺒﺎ ﻣﺎ ﺗﻜﻮن أﻃﺮاف اﻟﻤﻘﺎرﻧﺔ إﺣﺪي اﻟﻘﯿﻢ trueأو . false
ﻋﻨﺪ إﺟﺮاء ﻣﻘﺎرﻧﺔ ﻳﻜﻮن ﻧﺎﺗﺞ ھﺬة اﻟﻤﻘﺎرﻧﺔ إﺣﺪي اﻟﻘﯿﻢ اﻣﺎ trueأو . false
• && :
ﺗﻌﻨﻲ اﻟﻌﻤﻠﯿﺔ اﻟﻤﻨﻄﻘﯿﺔ "و" وﺗﻘﻮم ﺑﺈرﺟﺎع اﻟﻘﯿﻤﺔ trueﻋﻨﺪﻣﺎ ﻳﻜﻮن ﻃﺮﻓﻲ اﻟﻤﻘﺎرﻧﺔ ﻳﺴﺎوي trueوﻏﯿﺮ ذﻟﻚ
ﺳﻮف ﻳﺆدي إﻟﻲ إرﺟﺎع اﻟﻘﯿﻤﺔ falseﻛﻤﺎ ﻳﻠﻲ :
45
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
! : •
ﺗﻌﻨﻲ اﻟﻌﻤﻠﯿﺔ اﻟﻤﻨﻄﻘﯿﺔ " ﻻ" وﺗﻘﻮم ﺑﻌﻜﺲ اﻟﻘﯿﻤﺔ ﻛﻤﺎ ﻳﻠﻲ :
اﻟﻘﯿﻤﺔ اﻟﻨﺎﺗﺞ
True False
False True
أﻣﺜﻠﺔ :
46
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
ﺗﺴﺘﺨﺪم ﻹﺟﺮاء اﻟﻌﻤﻠﯿﺎت اﻟﺮﻳﺎﺿﯿﺔ ﻣﻦ ﺟﻤﻊ وﻃﺮح ﺑﺸﻜﻞ ﻣﺨﺘﺼﺮ ﺟﺪا .
وﺗﺴﻤﻲ ھﺬه اﻟﻤﻌﺎﻣﻼت ﺑﺄﻧﮫﺎ ﻣﻌﺎﻣﻼت اﺣﺎدﻳﺔ ﻷﻧﮫﺎ ﺗﺘﻌﺎﻣﻞ ﻣﻊ ﻃﺮف واﺣﺪ )(operand
: + +ﺗﺴﺘﺨﺪم ﻟ ﺰﻳﺎدة ﻗﯿﻤﺔ اﻟﻄﺮف )اﻟﻌﺎﻣﻞ( اﻟﻤﻤﺮر ﻟﮫﺎ ﺑﻤﻘﺪار واﺣﺪ ﺻﺤﯿﺢ . •
: - -ﺗﺴﺘﺨﺪم ﻹﻧﻘﺎص ﻗﯿﻤﺔ اﻟﻄﺮف )اﻟﻌﺎﻣﻞ( اﻟﻤﻤﺮر ﻟﮫﺎ ﺑﻤﻘﺪار واﺣﺪ ﺻﺤﯿﺢ . •
: -ﺗﺴﺘﺨﺪم ﻟﻌﻜﺲ إﺷﺎرة اﻟﻌﺎﻣﻞ اﻟﻤﻤﺮر ﻟﮫﺎ ﻓﺈذا ﻛﺎﻧﺖ ﻗﯿﻤﺔ ﺳﺎﻟﺒﺔ ﻓﺴﻮف ﺗﺘﺤﻮل إﻟﻲ ﻗﯿﻤﺔ ﻣﻮﺟﺒﺔ •
واﻟﻌﻜﺲ ﺻﺤﯿﺢ .
ﻻﺣﻆ :
ﻳﻮﺟﺪ ﺣﺎﻟﺘﺎن ﻟﻠﻤﻌﺎﻣﻠﯿﻦ ++و --ﺣﺎﻟﺔ ﻗﺒﻠﯿﺔ وأﺧﺮي ﺑﻌﺪﻳﺔ ﻛﻤﺎ ﻳﻠﻲ :
ﻣﺜﺎل :
><HTML dir=rtl
اﻻﺣﺎدﯾﺔ ><Title اﻟ ﻤﻌﺎﻣﻼت ></Title
><HEAD
>"<SCRIPT LANGUAGE="JavaScript
<!--
;var num1 = 5, num2
;num2 = num1++
;num2 = num1++
ﻳﺘﻢ ﻓﯿﻪ اﺳﺘﺨﺪام اﻟﻤﻌﺎﻣﻞ اﻻﺣﺎدي ++وﻟﻜﻦ ﺑﺎﻟﻮﺿﻊ اﻟﺒﻌﺪي ﻷﻧﻪ أﺗﻲ ﺑﻌﺪ اﻟﻌﺎﻣﻞ num1
وھﺬا اﻟﺴﻄﺮ ﻳﻜﺎﻓﺊ اﻟﺴﻄﺮﻳﻦ اﻟﺘﺘﺎﻟﯿﯿﻦ :
;num2 = num1
;num1 = num1 + 1
ﻣﺜﺎل :
><HTML dir=rtl
اﻻﺣﺎدﯾﺔ ><Title اﻟﻤﻌﺎﻣﻼت ></Title
><HEAD
>"<SCRIPT LANGUAGE="JavaScript
<!--
;var num1 = 5, num2
48
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
;num2 = ++num1
;num2 = ++num1
ﻳﺘﻢ ﻓﯿﻪ اﺳﺘﺨﺪام اﻟﻤﻌﺎﻣﻞ اﻻﺣﺎدي ++وﻟﻜﻦ ﺑﺎﻟﻮﺿﻊ اﻟﻘﺒﻠﻲ ﻷﻧﻪ أﺗﻲ ﻗﺒﻞ اﻟﻌﺎﻣﻞ num1
وھﺬا اﻟﺴﻄﺮ ﻳﻜﺎﻓﺊ اﻟﺴﻄﺮﻳﻦ اﻟﺘﺘﺎﻟﯿﯿﻦ :
49
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
ﻣﺜﺎل :
ﻣﺜﺎل :
: ﻣﺜﺎل
51
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
ﻣﺜﺎل :
;num += 5
;) alert( "num : " + num
52
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
;num += 5
وﻳﻌﻨﻲ أﺿﻒ إﻟﻲ ﻗﯿﻤﺔ اﻟﻤﺘﻐﯿﺮ numاﻟﻤﻘﺪار 5وھﺬا اﻟﺴﻄﺮ ﻳﻜﺎﻓﺊ اﻟﺴﻄﺮ اﻟﺘﺎﻟﻲ :
ﻣﺜﺎل :
;num *= 5
;) alert( "num : " + num
ﻗﺒﻞ اﻟﺤﺪﻳﺚ ﻋﻦ ﻣﻌﺎﻣﻼت اﻟﻨﻈﺎم اﻟﺜﻨﺎﺋﻲ دﻋﻨﻲ أﺧﺬك ﻟﻨﺮي ﻟﻤﺤﺎت ﻓﻲ ﻋﺎﻟﻢ اﻟﺜﻨﺎﺋﯿﺎت أو ﻧﻈﺎم اﻟﻌﺪ اﻟﺜﻨﺎﺋﻲ
وﻻ أﺧﻔﻲ ﻋﻠﻲ اي ﻣﺒﺘﺪأ ﻓﻲ ﻋﺎﻟﻢ اﻟﺒﺮﻣﺠﯿﺎت أو رﺑﻤﺎ اﻟﻤﺘﻮﺳﻄﯿﻦ أﻳﻀﺎ أن دﺧﻮل ھﺬا اﻟﻤﻨﻌﻄﻒ رﺑﻤﺎ ﻻ ﻳﻜﻮن ﺳﮫﻞ
وﻟﻜﻦ دﻋﻨﺎ ﻧﺘﻮﻛﻞ ﻋﻠﻲ اﷲ ﻓﮫﻮ ﺧﯿﺮا ﻣﻌﯿﻦ .
اﻟﻨﻈﺎم اﻟﺜﻨﺎﺋﻲ
ھﻮ أﺣﺪ أﻧﻈﻤﺔ اﻟﻌﺪ ﻣﺜﻞ اﻟﻨﻈﺎم اﻟﻌﺸﺮي اﻟﻤﻌﺘﺎد ﻟﻨﺎ .
ﻟﻜﻦ اﻟﻨﻈﺎم اﻟﺜﻨﺎﺋﻲ ﻳﻌﺘﻤﺪ ﻋﻠﻲ رﻗﻤﯿﻦ ﻓﻘﻂ وھﻤﺎ اﻟﻮاﺣﺪ و اﻟﺼﻔﺮ .
وھﺬا اﻟﻨﻈﺎم اﻟﻌﺪدي ﺗﻢ إﺳﺘﺨﺪاﻣﻪ ﻟﺒﺮﻣﺠﺔ اﻟﺤﻮاﺳﺐ ﻓﻲ ﺑﺪاﻳﺎت ﺗﻄﻮﻳﺮ ﺑﺮاﻣﺞ ﻟﻠﺤﺎﺳﺒﺎت ﺑﻤﺎ ﻛﺎن ﻳﻌﺮف ﺑﻠﻐﺔ اﻷﻟﺔ
machine languageوذﻟﻚ ﻻن وﺣﺪات ﺑﻨﺎء اﻟ ﺤﺎﺳﺐ ﺗﺘﻌﺎﻣﻞ ﻓﻲ ﺣﺴﺎﺑﺎﺗﮫﺎ ﺑﺎﻟﻨﻈﺎم اﻟﺜﻨﺎﺋﻲ ) ﻻن اﻟﻮﺣﺪة اﻹﻟﻜﺘﺮوﻧﯿﺔ
ﻻ ﺗﺴﺘﻄﯿﻊ ﺗﻤﯿﺰ إﻻ ﺣﺎﻟﺘﺎن وھﻤﺎ وﺟﻮد إﺷﺎرة إﻟﯿﻜﺘﺮوﻧﯿﺔ ﻧﺘﯿﺠﺔ إﻏﻼق اﻟﺪاﺋﺮة اﻹﻟﻜﺘﺮوﻧﯿﺔ ،وﻋﺪم وﺟﻮد إﺷﺎرة ﻧﺘﯿﺠﺔ
ﻓﺘﺢ اﻟﺪاﺋﺮة اﻹﻟﻜﺘﺮوﻧﯿﺔ ( .
ﻓﺈن ﻛﻨﺎ ﻧﺮﻳﺪ ﺗﻤﺜﯿﻞ اﻷﻋﺪاد وﻻ ﻧﻤﻠﻚ إﻻ رﻗﻤﯿﻦ ﻓﻘﻂ وھﻤﺎ ١واﻟـ ٠
ﻟﺬﻟﻚ ﻗﯿﺎﺳﺎ ﻋﻠﻲ ﻣﺎ ﺗﻌﻠﻤﻨﺎه ﻓﻲ اﻟﻨﻈﺎم اﻟﻌﺸﺮي ﻋﻨﺪﻣﺎ ﻧﺮﻳﺪ ﺗﻤﺜﯿﻞ اﻟﻌﺪد ﻋﺸﺮة ﻧﻘﻮم ﺑﻌﻤﻠﯿﺔ دﻣﺞ اﻟﺮﻗﻤﯿﻦ ١و ٠
وﻋﻨﺪ ﺗﻤﺜﯿﻞ اﻟﻌﺪد اﻟﺤﺎدي ﻋﺸﺮ ﻧﻘﻮم ﺑﺪﻣﺞ اﻟﺮﻗﻤﯿﻦ ١و ١وھﻜﺬا ﻋﻨﺪﻣﺎ ﻧﺨﺮج ﻋﻦ ﻧﻄﺎق ﻧﻈﺎم اﻟﻌﺪ .
وﺑﻤﺎ أن اﻟﻨﻈﺎم اﻟﺜﻨﺎﺋﻲ ﻻ ﻳﺘﻤﯿﺰ إﻻ ﺑﺮﻗﻤﯿﻦ ﻓﻘﻂ ﻓﻌﻨﺪﻣﺎ ﻧﺮﻳﺪ ﺗﻤﺜﯿﻞ اﻟﻌﺪد أﺛﻨﯿﻦ ﻧﻘﻮم ﺑﺪﻣﺞ اﻟﺮﻗﻤﯿﻦ ١و ٠وھﻜﺬا
ﻓﺎﻟﻌﺪد اﻟﻌﺸﺮي ٢ﻳﻤﺜﻞ ﻓﻲ اﻟﻨﻈﺎم اﻟﺜﻨﺎﺋﻲ ﻛﻤﺎ ﻳﻠﻲ ١٠
واﻟﻌﺪد اﻟﻌﺸﺮي ٣ﻳﻤﺜﻞ ﻓﻲ اﻟﻨﻈﺎم اﻟﺜﻨﺎﺋﻲ ﻛﻤﺎ ﻳﻠﻲ ١١
53
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
وﺗﻮﺟﺪ أﺳﺎﻟﯿﺐ رﻳﺎﺿﯿﺔ ﻟﻦ ﻧﺘﻄﺮق ﻟﮫﺎ ﺗﺴﺘﺨﺪم ﻓﻲ اﻟﺘﺤﻮﻳﻞ ﺑﯿﻦ أﻧﻈﻤﺔ اﻟﻌﺪ اﻟﻤﺨﺘﻠﻔﻪ .
ﻣﺜﺎل :
ﻣﺜﺎل :
54
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
ﻣﺜﺎل :
ﺗﺴﺘﺨﺪم ﻟﻌﻤﻞ أزاﺣﺔ ) ﺗﺤﺮﻳﻚ ( ﻟﻠﺒﺘﺎت bitsإﻟﻲ اﻟﯿﻤﯿﻦ أو اﻟﯿﺴﺎر ﺣﺴﺐ ﻧﻮع اﻹزاﺣﺔ ﻛﻤﺎ ﻳﻠﻲ
55
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
ﻣﺜﺎل :
ﻣﺜﺎل :
ﻣﻌﺎﻣﻼت ﺧﺎﺻﺔ
( اﻟﺸﺮط ?) اﻟﻘﯿﻤﺔ ﻋﻨﺪﻣﺎ ﯾﻜﻮن ﻧﺎﺗﺞ اﻟﺸﺮط ﺻﺤﯿﺤﺔ : اﻟﻘﯿﻤﺔ ﻋﻨﺪﻣﺎ ﯾﻜﻮن ﻧﺎﺗﺞ اﻟﺸﺮط ﺧﻄﺄ ;
ﻣﺜﺎل :
57
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
ﻣﺜﺎل :
58
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
ﻛﻤﺎ ﺗﻌﻠﻤﻨﺎ ﺟﻤﯿﻌﺎ ﺑﺎﻟﻤﺮﺣﻠﺔ اﻹﺑﺘﺪاﺋﯿﺔ أن اﻟﻌﻤﻠﯿﺎت اﻟﺮﻳﺎﺿﯿﺔ ﻣﻦ ﺟﻤﻊ و ﻃﺮح وﻗﺴﻤﺔ وﺿﺮب ﺗﺨﺘﻠﻒ أوﻟﻮﻳﺔ ﺗﻨﻔﯿﺬه
ﺣﯿﺚ أن أوﻟﻮﻳﺔ إﺟﺮاء ﻋﻤﻠﯿﺎت اﻟﻀﺮب واﻟﻘﺴﻤﺔ أﻛﺒﺮ ﻣﻦ أوﻟﻮﻳﺔ إﺟﺮاء ﻋﻤﻠﯿﺎت اﻟﺠﻤﻊ و اﻟﻄﺮح .
وأوﻟﻮﻳﺔ ﻋﻤﻠﯿﺎت اﻟﻀﺮب واﻟﻘﺴﻤﺔ ﻣﺘﺴﺎوﻳﺔ .
وأﻳﻀﺎ أوﻟﻮﻳﺔ ﻋﻤﻠﯿﺎت اﻟﺠﻤﻊ واﻟﻄﺮح ﻣﺘﺴﺎوﻳﺔ .
ﻓﺠﺰي اﷲ ﻛﻞ ﺧﯿﺮ ﻣﻦ ﻋﻠﻤﻨﺎ اﻟﻌﻠﻢ وﻧﺤﻦ ﺻﻐﺎرا ) وﺗﺎﷲ ﻣﺎ زﻟﻨﺎ ﺻﻐﺎرا وﻟﺴﻨﺎ ﺑﺼﻐﺎر ( .
2 + 4 * 3
ﻣﺜﺎل :
وﻟﻜﻨﻨﺎ ﺗﻌﻠﻤﻨﺎ ﻣﻤﺎ درﺳﻨﺎه ﻓﻲ ﻣﻨﮫﺞ اﻟﺮﻳﺎﺿﯿﺎت أﻧﻨﺎ ﻳﻤﻜﻨﻨﺎ ﺗﻐﯿﺮ أوﻟﻮﻳﺔ ﺗﻨﻔﯿﺬ اﻟﻌﻤﻠﯿﺎت اﻟﺮﻳﺎﺿﯿﺔ ﺑﺈﺳﺘﺨﺪام ﻣﺎ ﻳﺴﻤﻲ
أﻗﻮاس اﻟﻤﺠﻤﻮﻋﺎت وﺗﻜﻮن اﻟﻌﻤﻠﯿﺎت اﻟﺤﺴﺎﺑﯿﺔ اﻟﻤﻮﺟﻮدة داﺧﻞ ھﺬه اﻷﻗﻮاس ذات أﻋﻠﻲ أوﻟﻮﻳﺔ
ﻛﻤﺎ ﺑﺎﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ :
59
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
ﻣﺜﺎل :
ﻣﺜﺎل :
60
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
ﻣﺜﺎل :
><HTML dir=rtl
اﻷﺧﻄﺎ ><Title ﻣﻌﺎﻟﺠﺔ ></Title
><HEAD
>"<SCRIPT LANGUAGE="JavaScript
<!--
;var num1 ,num2
وﺑﻤﺎ أن اﻟﻤﺘﻐﯿﺮ اﻟﻤﺴﻤﻲ num3ﻟﻢ ﻳﺘﻢ ﺗﻌﺮﻳﻔﺔ وﻻ إﻋﻄﺎﺋﻪ ﻗﯿﻤﺔ ﻓﻼ ﻳﻤﻜﻦ إﺳﺘﺨﺪاﻣﻪ
وﻳﻜﻮن اﻟﻨﺎﺗﺞ ﻛﻤﺎ ﻳﻠﻲ :
61
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
اﻟﺼﯿﻐﺔ اﻟﻌﺎﻣﺔ
{try
}
ﻳﺘﻢ ﻛﺘﺎﺑﺔ اﻷﻛﻮد ﺑﯿﻦ أﻗﻮاس اﻟﺠﻤﻠﺔ tryﻓﺈذا ﺣﺪث اي ﺧﻄﺄ ﻳﻨﺘﻘﻞ اﻟﻤﻔﺴﺮ إﻟﻲ ﻣﻨﻄﻘﺔ اﻷﻛﻮاد ﺑﯿﻦ أﻗﻮاس اﻟﺠﻤﻠﺔ
catchوﻳﺘﻢ ﺗﺤﻤﯿﻞ ﻛﺎﺋﻦ ﻣﺨﺼﺺ ﻟﺤﻤﻞ ﻣﻮاﺻﻔﺎت ھﺬا اﻟﺨﻄﺄ ﺟﺮت اﻟﻌﺎدة ﻟﺘﺴﻤﯿﺔ ھﺬا اﻟﻤﺘﻐﯿﺮ ﺑﺎﺳﻢ eﻻﻧﻪ ﻳﺪل ﻋﻠﻲ
ﺣﺪوث إﺳﺘﺜﻨﺎء Exception
><HTML dir=rtl
اﻷﺧﻄﺎ ><Title ﻣﻌﺎﻟﺠﺔ ></Title
><HEAD
>"<SCRIPT LANGUAGE="JavaScript
<!--
;var num1 ,num2
{try
;) alert( num3
{) }catch( e
ﺧﻄﺄ"(alert ;)"ﺣﺪث
}
>//--
></SCRIPT
></HEAD
></HTML
62
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
وﻳﻤﻜﻨﻨﺎ إﻇﮫﺎر رﺳﺎﻟﺔ اﻟﺨﻄﺄ اﻷﺳﺎﺳﯿﺔ ﺑﺈﺳﺘﺨﺪام ﺧﺼﺎﺋﺺ اﻟﻜﺎﺋﻦ eوﺧﺎﺋﺼﻪ ھﻲ :
Name •
وﺗﻌﺒﺮ ﻋﻦ اﺳﻢ اﻟﺨﻄﺄ
Message •
وﺗﻌﺒﺮ ﻋﻦ ﻣﺤﺘﻮي ﻧﺺ رﺳﺎﻟﺔ اﻟﺨﻄﺄ
Number •
وﺗﻌﺒﺮ ﻋﻦ رﻗﻢ اﻟﺨﻄﺄ
Description •
وﺗﻌﺒﺮ ﻋﻦ رﺳﺎﻟﺔ ﺗﻔﺼﯿﻠﯿﺔ ﻟﻠﺨﻄﺄ
><HTML dir=rtl
اﻷﺧﻄﺎ ><Title ﻣﻌﺎﻟﺠﺔ ></Title
><HEAD
>"<SCRIPT LANGUAGE="JavaScript
<!--
;var num1 ,num2
{try
;) alert( num3
{) }catch( e
" (alert " +اﺳﻢ اﻟﺨﻄﺄ : e.name + "\n" +
" " +رﻗﻢ اﻟﺨﻄﺄ : e.number + "\n" +
" رﺳﺎﻟﺔ اﻟﺨﻄﺄ " : + e.message + "\n" +
"وﺻﻒ اﻟﺨﻄﺄ " : ;) + e.description
}
>//--
></SCRIPT
></HEAD
></HTML
63
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
ﻓﻲ ﺑﻌﺾ اﻷﺣﯿﺎن ﻧﺤﺘﺎج إﻟﻲ إﺳﺘﺤﺪاث ﺧﻄﺄ ﻣﺎ ،وﻳﺘﻢ ذﻟﻚ ﺑﺈﺳﺘﺨﺪام اﻷﻣﺮ ، throwﺑﻄﺮﻳﻘﺘﯿﻦ
أوﻟﮫﻤﺎ
ھﺬا اﻟﻤﺜﺎل ﻟﯿﺲ ﺑﻪ اي ﺧﻄﺄ وﻟﻜﻨﻨﺎ ﺳﻮف ﻧﺴﺘﺤﺪث ھﺬا اﻟﺨﻄﺄ ﻛﻤﺎ ﻳﻠﻲ
><HTML dir=rtl
اﻷﺧﻄﺎ ><Title ﻣﻌﺎﻟﺠﺔ ></Title
><HEAD
>"<SCRIPT LANGUAGE="JavaScript
<!--
ﺑﻚ" = var helloMessage ;"ﻣﺮﺣﺒﺎ
{try
;) alert( helloMessage
ﻣﺴﺘﺤﺪث" throw ;" ﻫﺬا ﺧﻄﺄ ﻟﯿﺲ ﺣﻘﯿﻘﻲ وﻟﻜﻨﻪ
{) }catch( e
" (alert " رﺳﺎﻟﺔ اﻟﺨﻄﺄ : ;) + e
}
>//--
></SCRIPT
></HEAD
></HTML
ﻣﻦ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ ﺗﻢ ﻛﺘﺎﺑﺔ رﺳﺎﻟﺔ اﻟﺨﻄﺄ ﺑﻌﺪ اﻷﻣﺮ throwﻛﻤﺎ ﺑﺎﻟﺴﻄﺮ اﻟﺘﺎﻟﻲ
ﻓﻌﻨﺪ ﺗﻨﻔﯿﺬ ھﺬا اﻷﻣﺮ ﻳﻨﺘﻘﻞ اﻟﻤﻔﺴﺮ إﻟﻲ اﻟﺠﻤﻠﺔ catchﺣﺎﻣﻼ ﻣﻌﻪ رﺳﺎﻟﺔ اﻟﺨﻄﺄ ﻓﻲ اﻟﻤﺘﻐﯿﺮ e
ﺑﻌﺪھﺎ ﻗﻤﻨﺎ ﺑﻄﺒﺎﻋﺔ رﺳﺎﻟﺔ اﻟﺨﻄﺄ ﻛﻤﺎ ﻳﻠﻲ
64
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
ﻣﺜﺎل
><HTML dir=rtl
اﻷﺧﻄﺎ ><Title ﻣﻌﺎﻟﺠﺔ ></Title
><HEAD
>"<SCRIPT LANGUAGE="JavaScript
<!--
ﺑﻚ" = var helloMessage ;"ﻣﺮﺣﺒﺎ
{try
;) alert( helloMessage
ﻣﺴﺘﺤﺪث"(var err = new Error ;)" ﻫﺬا ﺧﻄﺄ ﻟﯿﺲ ﺣﻘﯿﻘﻲ وﻟﻜﻨﻪ
ﯾﺪوﯾﻦ" = err.description ;" ﻫﺬا ﺧﻄﺄ ﺗﻢ ﺻﻨﻌﺔ
;throw err
{) }catch( e
" (alert " رﺳﺎﻟﺔ اﻟﺨﻄﺄ : + e.message + "\n" +
" "وﺻﻒ اﻟﺨﻄﺄ : ;) + e.description
}
>//--
></SCRIPT
></HEAD
></HTML
وﻟﻦ ﻧﺨﻮض ﻛﺜﯿﺮا ﻓﻲ ھﺬا اﻟﻤﺜﺎل ﺣﺘﻲ ﻧﻘﻮم ﺑﺸﺮح اﻟﻜﺎﺋﻦ Errorﺑﺎﻟﺠﺰء اﻟﺜﺎﻧﻲ ﻣﻦ ھﺬا اﻟﻜﺘﺎب إن ﺷﺎء اﷲ
65
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
ﺟﻤﻠﺔ with
ﻋﻨﺪﻣﺎ ﺗﻘﻮم ﺑﺈﺳﺘﺨﺪام ﺧﺼﺎﺋﺺ propertiesو أو وﻇﺎﺋﻒ functionsﺗﺎﺑﻌﺔ ﻟﻜﺎﺋﻦ واﺣﺪ ،ﻳﻤﻜﻨﻨﺎ أن ﻧﺠﻌﻞ ھﺬا اﻟﻜﺎﺋﻦ
ﻳﺸﯿﺮ إﻟﻲ ﺧﺼﺎﺋﺼﻪ و وﻇﺎﺋﻔﻪ ﺑﺪون ﺗﻜﺮار ﻛﺘﺎﺑﺘﻪ ﻗﺒﻞ ﻛﺘﺎﺑﺔ اﻟﺨﺎﺻﯿﺔ أو اﻟﻮﻇﯿﻔﺔ .
>//--
></SCRIPT
></HEAD
></HTML
وﻛﻤﺎ ﺗﺮي ﺑﺎﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ ﻗﺪ ﻗﻤﻨﺎ ﺑﺘﻜﺮار ﻛﺘﺎﺑﺔ اﻟﻜﺎﺋﻦ windowﻛﻤﺎ ﻳﻠﻲ
وﻳﻤﻜﻨﻨﺎ أن ﻧﻘﻮم ﺑﺈﻟﻐﺎء ﺗﻜﺮار ﻛﺘﺎﺑﺔ اﻟﻜﺎﺋﻦ windowﺑﺈﺳﺘﺨﺪام اﻟﻜﺎﺋﻦ windowﻛﻤﺎ ﺑﺎﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ :
66
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
ﻛﻤﺎ ﺗﺮي ﻟﻢ ﻧﻘﻢ ﺑﺘﻜﺮار ﻛﺘﺎﺑﺔ اﺳﻢ اﻟﻜﺎﺋﻦ ، windowﺑﻞ ﺗﻢ ﻛﺘﺎﺑﺘﻪ ﻣﺮة واﺣﺪة ﺑﯿﻦ أﻗﻮاس ﺟﻤﻠﺔ withﺛﻢ اي ﺧﺎﺻﯿﺔ أو
وﻇﯿﻔﺔ ﺗﺎﺑﻌﺔ ﻟﮫﺬا اﻟﻜﺎﺋﻦ ﺗﻢ ﻛﺘﺎﺑﺘﮫﺎ ﺑﯿﻦ أﻗ ﻮاس اﻟﻤﺠﻤﻮﻋﺔ ﻟﺠﻤﻠﺔ withﻳﻤﻜﻨﻚ ﺗﺠﺎھﻞ ﻛﺘﺎﺑﺔ اﺳﻢ اﻟﻜﺎﺋﻦ window
اﻟﺘﺎﺑﻊ ﻟﻪ .
ﻣﻼﺣﻈﺔ :
ﻳﻤﻜﻨﻚ ﻛﺘﺎﺑﺔ اﺳﻢ اﻟﻜﺎﺋﻦ وﺣﺘﻲ ﺑﻌﺪ إﺳﺘﺨﺪام ﺟﻤﻠﺔ withوﻟﻜﻦ ھﺬا ﻳﺠﻌﻞ ﺟﻤﻠﺔ withﺑﺪون ﻓﺎﺋﺪة .
ﻛﻤﺎ ﻳﻠﻲ :
67
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
ﻣﺜﺎل
><HTML dir=rtl
> with </Titleﺟﻤﻠﺔ ><Title
><HEAD
>"<SCRIPT LANGUAGE="JavaScript
<!--
ﻋﻠﻲ" = var userName ;"اﻟﺤﺴﯿﻦ ﻣﺤﻤﺪ
ﻛﻤﺎ ﺗﻼﺣﻆ أﻧﻪ ﺗﻢ ﺗﺪاﺧﻞ ﺟﻤﻠﺘﯿﻦ ﻟـ withأﺣﺪھﻤﺎ ﻟﻠﻜﺎﺋﻦ windowواﻷﺧﺮي ﻟﻠﻜﺎﺋﻦ documentﻛﻤﺎ ﻳﻠﻲ :
{) with( window
؟"(var familyName = prompt ;)"ﻣﺎ ﻫﻮ اﺳﻢ اﻟﻌﺎﺋﻠﺔ
"(alert "ﻣﺮﺣﺒﺎ ﺑﻚ ﯾﺎ : ;) + userName
"ﻣﺮﺣﺒﺎ ﺑﻌﺎﺋﻠﺔ alert(" : ;) + familyName
68
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
ﺍﻟﻔﺼﻞ ﺍﻟﺨﺎﻣﺲ
ﺍﻟﺘﺤﻜﻢ ﻓﻲ ﻣﺴﺎﺭ ﺍﻟﺒﺮﻧﺎﻣﺞ
69
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
داﺋﻤﺎ ﻓﻲ ﺣﯿﺎﺗﻨﺎ اﻟﻤﻌﺎﺻﺮة ﻣﺎ ﻧﺤﺘﺎج ﻹﺗﺨﺎذ ﺑﻌﺾ اﻟﻘﺮارات ھﻞ ﻧﻔﻌﻞ ﻛﺬا أم ﻛﺬا ﻋﻠﻲ ﺳﺒﯿﻞ اﻟﻤﺜﺎل ﻗﺒﻞ أن ﺗﺒﺪأ ﻓﻲ
ﺗﻌﻠﻢ ﻟﻐﺔ اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ رﺑﻤﺎ ﺗﺒﺎدر ﻟﻚ ھﺬا اﻟﺴﺆال ھﻞ أﻧﺖ ﻓﻲ ﺣﺎﺟﺔ ﻟﺘﻌﻠﻢ ھﺬه اﻟﻠﻐﺔ ؟
وھﺬا اﻟﺴﺆال ﻳﺤﺘﻤﻞ إﺣﺪي اﻹﺟﺎﺑﺎت إﻣﺎ ﻧﻌﻢ أو ﻻ ،وﺑﺈﺟﺎﺑﺘﻚ ﻋﻠﻲ ھﺬا اﻟﺴﺆال ﺗﻜﻮن ﻗﺪ ﺣﺪدت ﻣﺴﺎرك ﻓﻲ اﻷﻳﺎم
اﻟﻘﺎدﻣﺔ ،ﻋﻠﻲ ﺳﺒﯿﻞ اﻟﻤﺜﺎل ﻟﻮ ﻛﺎﻧﺖ إﺟﺎﺑﺘﻚ ﺑﻼ ﻟﻤﺎ إﺳﺘﻄﻌﺖ ﻗﺮأت ھﺬا اﻟﻨﺺ اﻟﻤﻜﺘﻮب ﺑﯿﻦ ﻳﺪﻳﻚ ،وإذا ﻛﺎﻧﺖ إﺟﺎﺑﺘﻚ
ﺑﻨﻌﻢ ﻓﺴﻮف ﺗﻜﻮن ﻣﻦ ﻗﺎرﺋﻲ ھﺬا اﻟﻨﺺ .
ﻧﺨﻠﺺ ﻣﻤﺎ ﺳﺒﻖ إﻟﻲ أﻧﻨﺎ داﺋﻤﺎ ﻣﺎ ﺗﻄﺮح أﻣﺎﻣﻨﺎ إﺧﺘﯿﺎرات ﻧﺤﺘﺎج ﻟﻮﺿﻌﮫﺎ ﻓﻲ ﺟﻤﻞ ﺷﺮط وھﺬه اﻟﺠﻤﻠﺔ ﺗﺤﺪد اﻟﻤﺴﺎر
ﺣﺴﺐ اﻹﺧﺘﯿﺎر ،ﻓﻌﻠﻲ ﺳﺒﯿﻞ اﻟﻤﺜﺎل ﻟﺠﻤﻠﺔ اﻟﺸﺮط
ھﻞ ﺗﺮﻳﺪ أن ﺗﺘﻌﻠﻢ ﻟﻐﺔ اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ ؟ وﻟﯿﺲ أﻣﺎﻣﻚ إﻻ إﺧﺘﯿﺎران أﺣﺪھﻤﺎ ﻧﻌﻢ واﻷﺧﺮ ﻻ
ﻓﻌﻨﺪﻣﺎ ﺗﻘﻮل ﻧﻌﻢ ﻓﺴﻮف ﺗﺠﻨﻲ ﺛﻤﺎر ﻣﺎ ﺗﻌﻠﻤﺖ إن ﺷﺎء اﷲ ﻓﻤﻦ ﺟﺪ وﺟﺪ ،وإذا ﻛﺎن اﻟﺨﯿﺎر ﺑﻼ ﻓﻼ ﺗﻠﻮﻣﻨﺎ إﻻ ﻧﻔﺴﻚ
ﻟﺘﻔﺮﻳﻄﻚ ﻓﻲ أﺧﺬ اﻟﻌﻠﻢ اﻟﻨﺎﻓﻊ .
ﻣﺜﺎل
;var num = 78
{ ) if( num >= 50
" (alert اﻟﻤﺘﻐﯿﺮ num = " + num + "\n أﻛﺒﺮ ﻣﻦ أو ﯾﺴﺎوي ٥٠ " ;)
}
70
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
وﻓﯿﻪ ﻳﺘﻢ ﺣﺴﺎب ﻗﯿﻤﺔ ﺟﻤﻠﺔ اﻟﺸﺮط ﻓﺈذا ﻛﺎﻧﺖ ﺟﻤﻠﺔ اﻟﺸﺮط ﺗﻜﺎﻓﻲ اﻟﻘﯿﻤﺔ ) trueأو اي ﻗﯿﻤﺔ ﻋﺪدﻳﺔ ﻏﯿﺮ اﻟﺼﻔﺮ أو
اي ﻗﯿﻤﺔ ﻧﺼﯿﺔ ﻏﯿﺮ ﻗﯿﻤﺔ اﻟﻨﺺ اﻟﻔﺎرغ أو اﻟﻘﯿﻤﺔ ، ( nullﻓﻌﻨﺪﺋﺬ ﻳﺘﻢ ﺗﻨﻔﯿﺬ اﻷﻛﻮاد ﺑﯿﻦ أﻗﻮاس ﺟﻤﻠﺔ اﻟﺸﺮط ، if
وإذا ﻛﺎﻧﺖ ﺗﻜﺎﻓﺊ اﻟﻘﯿﻤﺔ ) falseأو اﻟﻘﯿﻤﺔ اﻟﻌﺪ دﻳﺔ ﺻﻔﺮ أو اﻟﻘﯿﻤﺔ اﻟﻨﺼﯿﺔ اﻟﻔﺎرﻏﺔ ( ﺳﻮف ﻳﺘﻢ ﺗﺠﺎھﻞ ﺗﻨﻔﯿﺬ اﻷﻛﻮاد
ﺑﯿﻦ أﻗﻮاس ﺟﻤﻠﺔ اﻟﺸﺮط ifﺛﻢ ﻳﺘﻢ ﺗﻨﻔﯿﺬ اﻷﻛﻮاد اﻟﻤﻨﺤﺼﺮة ﺑﯿﻦ أﻗﻮاس اﻟﺠﻤﻠﺔ . else
ﻣﺜﺎل
;var num = 18
{ ) if( num >= 50
" (alert اﻟﻤﺘﻐﯿﺮ num = " + num + "\n أﻛﺒﺮ ﻣﻦ أو ﯾﺴﺎوي ٥٠ " ;)
{}else
" (alert اﻟﻤﺘﻐﯿﺮ num = " + num + "\n أﻗﻞ ﻣﻦ ٥٠ " ;)
}
وﻓﯿﻪ ﻳﺘﻢ ﺣﺴﺎب ﻗﯿﻤﺔ ﺟﻤﻠﺔ اﻟﺸﺮط اﻷوﻟﻲ ﻓﺈذا ﻛﺎﻧﺖ ﺟﻤﻠﺔ اﻟﺸﺮط ﺗﻜﺎﻓﻲ اﻟﻘﯿﻤﺔ ) trueأو اي ﻗﯿﻤﺔ ﻋﺪدﻳﺔ ﻏﯿﺮ
اﻟﺼﻔﺮ أو اي ﻗﯿﻤﺔ ﻧﺼﯿﺔ ﻏﯿﺮ ﻗﯿﻤﺔ اﻟﻨﺺ اﻟﻔﺎرغ أو اﻟﻘﯿﻤﺔ ، ( nullﻓﻌﻨﺪﺋﺬ ﻳﺘﻢ ﺗﻨﻔﯿﺬ اﻷﻛﻮاد ﺑﯿﻦ أﻗﻮاس ﺟﻤﻠﺔ اﻟﺸﺮط if
،وإذا ﻛﺎﻧﺖ ﺗﻜﺎﻓﺊ اﻟﻘﯿﻤﺔ ) falseأو اﻟﻘﯿﻤﺔ اﻟﻌﺪدﻳﺔ ﺻﻔﺮ أو اﻟﻘﯿﻤﺔ اﻟﻨﺼﯿﺔ اﻟﻔﺎرﻏﺔ ( ﺳﻮف ﻳﺘﻢ ﺗﺠﺎھﻞ ﺗﻨﻔﯿﺬ اﻷﻛﻮاد
ﺑﯿﻦ أﻗ ﻮاس ﺟﻤﻠﺔ اﻟﺸﺮط ifﺛﻢ ﻳﻨﺘﻘﻞ أﻟﻲ ﺟﻤﻠﺔ اﻟﺸﺮط اﻟﺘﺎﻟﯿﺔ وﻳﻔﻌﻞ ﻣﻌﮫﺎ ﻣﺜﻞ ﻣﺎ ﺳﺒﻖ ﻓﺈذا ﻛﺎﻧﺖ ﻛﻞ ﺟﻤﻞ اﻟﺸﺮط
ﺗﺆول إﻟﻲ falseﻓﺴﻮف ﻳﺘﻢ اﻟﺒﺤﺚ ﻋﻦ ﺟﻤﻠﺔ elseﻓﺈن وﺟﺪت ﻓﺴﻮف ﻳﺘﻢ ﺗﻨﻔﯿﺬ اﻷﻛﻮاد اﻟﻤﻨﺤﺼﺮة ﺑﯿﻦ أﻗﻮاس اﻟﺠﻤﻠﺔ
elseوإن ﻟﻢ ﻳﺠﺪ ﺟﻤﻠﺔ elseﻓﻠﻦ ﻳﺘﻢ ﺗﻨﻔﯿﺬ ﺷﺊ.
71
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
ﻣﺜﺎل
;var num = 48
ﻣﺜﺎل
ھﻮ ﻧﻔﺲ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ وﻟﻜﻦ ﺑﺪون ﺟﻤﻠﺔ else
;var num = 48
72
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
><HTML dir=rtl
ﻛﻠﻤﺔ اﻟﺴﺮ ><Title اﻟﻜﺸﻒ ﻋﻦ ></Title
><HEAD
>"<SCRIPT LANGUAGE="JavaScript
<!--
;"var userPassword = "123
وﻳﻜﻮن اﻟﻨﺎﺗﺞ ﺑﻌﺪ إدﺧﺎل ﻛﻠﻤﺔ اﻟﺴﺮ ﺑﻘﯿﻤﺔ ١٢ﺛﻢ اﻟﻀﻐﻂ ﻋﻠﻲ زرار okﻛﻤﺎ ﻳﻠﻲ :
وﻳﻜﻮن اﻟﻨﺎﺗﺞ ﺑﻌﺪ إدﺧﺎل ﻛﻠﻤﺔ اﻟﺴﺮ ﺑﻘﯿﻤﺔ ١٢٣ﺛﻢ اﻟﻀﻐﻂ ﻋﻠﻲ زرار okﻛﻤﺎ ﻳﻠﻲ :
73
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
ﻣﺜﺎل
ﻣﺜﺎل
74
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
ﺗﺴﺘﺨﺪم ﺟﻤﻠﺔ اﻟﺸﺮط switchﻣﺜﻞ إﺳﺘﺨﺪاﻣﻨﺎ ﻟﺠﻤﻠﺔ اﻟﺸﺮط ifاﻟﻤﺰدوﺟﺔ أو اﻟﻤﺮﻛﺒﺔ ،إذا ﻣﺎ داﻣﺖ ﺗﺆدي ﻧﻔﺲ
وﻇﯿﻔﺔ اﻟﺠﻤﻠﺔ ifﻓﻤﺎ اﻟﺤﺎﺟﺔ إﻟﯿﮫﺎ ،ﻧﻌﻢ أﻧﺖ ﻋﻠﻲ ﺣﻖ ﻟﻜﻨﻨﺎ ﻧﺤﺘﺎج إﻟﻲ ﺟﻤﻠﺔ switchاﻟﺸﺮﻃﯿﺔ ﺑﺪﻻ ﻣﻦ
ﺟﻤﻠﺔ if ... elseﻟﺘﺴﮫﯿﻞ ﺷﻜﻞ اﻟﻜﻮد .
اﻟﺼﯿﻐﺔ اﻟﻌﺎﻣﺔ
ﻳﺘﻢ ﻣﻘﺎرﻧﺔ اﻟﻤﺘﻐﯿﺮ أو اﻟﻌﻤﻠﯿﺔ اﻟﻤﺮاد ﻣﻘﺎرﻧﺘﮫﺎ ﺑﺎﻟﻘﯿﻢ اﻟﻤﻮﺟﻮدة ﺑﺤﺎﻻت ) ( casesﺟﻤﻠﺔ switchﻓﺈذا ﺗﺴﺎوت
إﺣﺪاھﻤﺎ ﻣﻊ ﻗﯿﻤﺔ اﻟﻤﺘﻐﯿﺮ اﻟﻤﻘﺎرن ﻳﺘﻢ اﻟﺪﺧﻮل داﺧﻞ ھﺬة اﻟﺤﺎﻟﺔ caseوﺗﻨﻔﯿﺬ اﻷﻛﻮاد اﻟﺘﻲ ﺑﺪاﺧﻠﮫﺎ ،وإن ﻟﻢ ﻳﺘﻢ
ﺗﺴﺎوي اﻟﻘﯿﻤﺔ اﻟﻤﻘﺎرﻧﺔ ﺑﺎي ﻣﻦ ﺣﺎﻻت ﺟﻤﻠﺔ switchﻳﺘﻢ اﻟﺒﺤﺚ ﻋﻦ اﻟﺤﺎﻟﺔ اﻟﺨﺎﺻﺔ defaultﻓﺈذا وﺟﺪت ﻳﺘﻢ اﻟﺪﺧﻮل
ﻓﯿﮫﺎ ﺛﻢ ﺗﻨﻔﺬ اﻷﻛﻮاد اﻟﻤﻮﺟﻮدة ﺑﮫﺎ .
ﻣﻼﺣﻈﺔ :
ﻟﺘﻔﺎدي ﺣﺪوث ﻋﻤﻠﯿﺔ اﻟﺴﻘﻮط أو ﻣﺎ ﻳﺴﻤﻲ ﺑﻲ fall throughﻳﺠﺐ وﺿﻊ اﻷﻣﺮ breakﺣﺘﻲ ﺗﻨﮫﻲ ﺟﻤﻠﺔ . switch
وﻟﻜﻦ ﻓﻲ ﺑﻌﺾ اﻷﺣﯿﺎن ﻧﺤﺘﺎج ﻟﻌﺪم ﺗﻼﻓﻲ ﻋﻤﻠﯿﺔ اﻟﺴﻘﻮط ﻛﻤﺎ ﺳﻨﺮي ﺑﺎﻷﻣﺜﻠﺔ اﻟﻘﺎدﻣﺔ .
75
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
ﻣﺜﺎل
<HTML dir=rtl>
<Title> اﻟﺸﺮط ﺟﻤﻠﺔ switch </Title>
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
<!--
var num = 4;
switch( num ) {
case 1 :
alert( " اﻟﻌﺪد num \n ١ "ﯾﺴﺎوي );
break;
case 2 :
alert( " اﻟﻌﺪد num \n ٢ "ﯾﺴﺎوي );
break;
case 3 :
alert( " اﻟﻌﺪد num \n ٣ "ﯾﺴﺎوي );
break;
case 4 :
alert( " اﻟﻌﺪد num \n ٤ "ﯾﺴﺎوي );
break;
default :
alert( " اﻟﻌﺪد num \n ﯾﺴﺎوي " + num );
break;
}
//-->
</SCRIPT>
</HEAD>
</HTML>
76
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
ﻣﺜﺎل
><HTML dir=rtl
اﻟﺸﺮط ><Title ﺟﻤﻠﺔ >switch </Title
><HEAD
>"<SCRIPT LANGUAGE="JavaScript
<!--
;var num = 4
{ ) switch( num
case 1 , 2 , 3 , 4:
" (alert اﻟﻌﺪد num \n "رﺑﻤﺎ ﯾﺴﺎوي ١أو ٢أو ٣أو ٤ ;)
;break
default :
" (alert اﻟﻌﺪد num \n ﯾﺴﺎوي ;) " + num
;break
}
>//--
></SCRIPT
></HEAD
></HTML
77
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
><HTML dir=rtl
اﻟﺸﺮط ><Title ﺟﻤﻠﺔ >switch </Title
><HEAD
>"<SCRIPT LANGUAGE="JavaScript
<!--
;var num = 4
{ ) switch( num
case 1 :
case 2 :
case 3 :
case 4 :
" (alert اﻟﻌﺪد num \n "رﺑﻤﺎ ﯾﺴﺎوي ١أو ٢أو ٣أو ٤ ;)
;break
default :
" (alert اﻟﻌﺪد num \n ﯾﺴﺎوي ;) " + num
;break
}
>//--
></SCRIPT
></HEAD
></HTML
وھﻨﺎ ﻟﻢ ﻧﻀﻊ اﻟﺠﻤﻠﺔ breakﻟﺘﻔﺎدي ﺣﺪوث ﻋﻤﻠﯿﺔ اﻟﺴﻘﻮط fall throughﺑﻞ أردﻧﺎ إﺣﺪاث ھﺬا اﻟﺴﻘﻮط ،و إذا
ﺗﺼﺎدف ﺗﺴﺎوي اﻟﻘﯿﻤﺔ numﺑﺈﺣﺪي اﻟﻘﯿﻢ ١أو ٢أو ٣أو ٤ﺳﻮف ﻳﺘﻢ ﺗﻨﻔﯿﺬ ﻧﻔﺲ ﻗﻄﻌﺔ اﻟﻜﻮد .
ﻓﺈذا ﻛﺎﻧﺖ اﻟﻘﯿﻤﺔ numﺗﺴﺎوي اﻟﻘﯿﻤﺔ ، ٢ﺳﻮف ﻳﺘﻢ اﻟﺴﻘﻮط إﻟﻲ اﻟﺤﺎﻟﺔ ٣ﻷن اﻟﺤﺎﻟﺔ ٢ﻻ ﻳﻮﺟﺪ ﺑﮫﺎ اﻷﻣﺮ ، break
ﺛﻢ ﻳﺤﺪث ﺳﻘﻮط أﺧﺮ إﻟﻲ اﻟﺤﺎﻟﺔ ٤ﻷن اﻟﺤﺎﻟﺔ ٣ﻟﯿﺲ ﺑﮫﺎ اﻷﻣﺮ breakاﻟﺨﺎص ﺑﺈﻧﮫﺎء ﺗﻨﻔﯿﺬ ﺟﻤﻠﺔ ، switchﺛﻢ ﻳﺘﻢ
ﺗﻨﻔﯿﺬ اﻟﻜﻮد اﻟﻤﻮﺟﻮد ﺑﺎﻟﺤﺎﻟﺔ ، ٤ﺛﻢ ﻳﺘﻢ إﻧﮫﺎء اﻟﺠﻤﻠﺔ switchﻧﺘﯿﺠﺔ وﺟﻮد اﻷﻣﺮ breakﺑﺎﻟﺤﺎﻟﺔ . ٤
78
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
اﻟﮫﺪف ﻣﻦ ﺟﻤﻞ اﻟﺘﻜﺮار ھﻮ ﺗﻜﺮار ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻷﻛﻮاد ﻟﻌﺪد أو ﻣﺪي ﻣﻌﯿﻦ ﻣﻦ اﻟﻤﺮات .
ھﺐ أﻧﻨﻲ ﻃﻠﺒﺖ ﻣﻨﻚ أن ﺗﻘﻮم ﺑﻄﺒﺎﻋﺔ اﻟﺠﻤﻠﺔ اﻟﺘﺎﻟﯿﺔ "أن ﻣﺤﺘﺎج ﻟﺠﻤﻞ اﻟﺘﻜﺮار" ﺛﻼث ﻣﺮات ﻓﺴﻮف ﺗﻘﻮل ﻟﻲ ھﺬا
أﻣﺮ ﺳﮫﻞ ،ﻧﻌﻢ ﺳﻮف أﺻﺪﻗﻚ وﻟﻜﻦ ﻣﺎذا ﻟﻮ زادت ﻣﺮات اﻟﺘﻜﺮار إﻟﻲ ١٠٠٠ﻣﺮة ﻣﺜﻼ أو إﻟﻲ ﻋﺪد ﻣﻦ اﻟﻤﺮات ﻏﯿﺮ ﻣﺤﺪد
ﻳﺘﻮﻗﻒ ﻋﻠﻲ ﺷﺮط ﻣﺎ ﻛﻤﺎ ﺳﻨﺮي ﻋﻨﺪ اﻟﺤﺪﻳﺚ ﻋﻠﻲ ﺟﻤﻞ اﻟﺘﻜﺮار ﻋﻠﻲ ﺣﺪا .
اﻟﮫﺪف ﻣﻦ ﺟﻤﻠﺔ اﻟﺘﻜﺮار forھﻮ ﺗﻜﺮار ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻷﻛﻮاد ﻟﻌﺪد ﻣﻌﯿﻦ ﻣﻦ اﻟﻤﺮات .
اﻟﺼﯿﻐﺔ اﻟﻌﺎﻣﺔ
ﻣﺜﺎل
ﻳﻘﻮم ﺑﻄﺒﺎﻋﺔ ﻣﺠﻤﻮع اﻷرﻗﺎم ﻣﻦ ١إﻟﻲ ٤
><HTML dir=rtl
><Title اﻟﺘﻜﺮار ﺣﻤﻠﺔ >for</Title
><HEAD
>"<SCRIPT LANGUAGE="JavaScript
<!--
;var x = 0
79
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
ﻋﻨﺪ ﺗﻨﻔﯿﺬ ﺟﻤﻠﺔ forﻳﺘﻢ ﺗﻨﻔﯿﺬ ﺟﻤﻠﺔ اﻟﺒﺪاﻳﺔ أول ﻣﺮة ﻓﻘﻂ .
ﺛﻢ ﻳﺘﻢ ﺣﺴﺎب ﺟﻤﻠﺔ اﻟﺸﺮط ﻓﺈذا ﻛﺎﻧﺖ ﺗﺴﺎوي trueﻳﺘﻢ ﺗﻨﻔﯿﺬ اﻷﻛﻮاد ﺑﯿﻦ أﻗﻮاس اﻟﺠﻤﻠﺔ . for
ﺛﻢ ﻳﺘﻢ ﺣﺴﺎب ﺟﻤﻠﺔ اﻟﺸﺮط ﻓﺈذا ﻛﺎﻧﺖ ﺗﺴﺎوي trueﻳﺘﻢ ﺗﻨﻔﯿﺬ اﻷﻛﻮاد ﺑﯿﻦ أﻗﻮاس اﻟﺠﻤﻠﺔ . for
ﻣﺜﺎل
ﻣﺜﻞ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ وﻟﻜﻦ ﺑﻌﺪم وﺿﻊ ﺟﻤﻠﺔ اﻟﺸﺮط ﻟﺠﻤﻠﺔ for
><HTML dir=rtl
><Title اﻟﺘﻜﺮار ﺣﻤﻠﺔ >for</Title
><HEAD
>"<SCRIPT LANGUAGE="JavaScript
<!--
;var x = 0
ﻻﺣﻆ أﻧﻪ ﻻ ﺗﻮﺟﺪ ﺟﻤﻠﺔ ﺷﺮط ﻟﺠﻤﻠﺔ forوﻟﻜﻦ ﻳﻮﺟﺪ داﺧﻞ ﻛﻮد ﺟﻤﻞ اﻟﺘﻜﺮار أﺣﺪ ﺟﻤﻞ اﻟﺸﺮط ﺑﮫﺎ ﻛﻮد ﻳﺆدي إﻟﻲ إﻧﮫﺎء
دورة ﺟﻤﻠﺔ . for
اﻟﺼﯿﻐﺔ اﻟﻌﺎﻣﺔ
ﺟﻤﻠﺔ break
ﺗﺴﺘﺨﺪم ﻹﻧﮫﺎء ﺟﻤﻞ اﻟﺘﻜﺮار ﻣﺜﻞ ﺟﻤﻞ forو ﺟﻤﻞ whileوﺟﻤﻞ do while
ﺟﻤﻠﺔ continue
ﺗﺴﺘﺨﺪم ﻟﻠﺮﺟﻮع ﻣﺮة أﺧﺮي إﻟﻲ ﺟﻤﻠﺔ اﻟﺸﺮط اﻟﻤﺤﺪدة ﻟﻌﻤﻠﯿﺔ اﻟﺘﻜﺮار ،وإﻟﻐﺎء ﺗﻨﻔﯿﺬ اﻷﻛﻮاد اﻟﺘﺎﻟﯿﺔ ﻟﮫﺎ ﻛﻤﺎ ﺑﺎﻟﻤﺜﺎل
اﻟﺘﺎﻟﻲ :
ﻣﺜﺎل
ﻳﻘﻮم ﺑﻄﺒﺎﻋﺔ ﻣﺠﻤﻮع اﻷرﻗﺎم اﻟﻔﺮدﻳﺔ ﺑﯿﻦ ١و ١٠
><HTML dir=rtl
><Title اﻟﺘﻜﺮار ﺣﻤﻠﺔ >for</Title
><HEAD
>"<SCRIPT LANGUAGE="JavaScript
<!--
;var x = 0
81
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
;)alert("1 + 3 + 5 + 7 + 9 = " + x
>//--
></SCRIPT
></HEAD
></HTML
اﻟﮫﺪف ﻣﻦ ﺟﻤﻠﺔ اﻟﺘﻜﺮار whileھﻲ ﺗﻜﺮار ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻷﻛﻮاد ﻟﻌﺪد ﻏﯿﺮ ﻣﺤﺪد ﻳﺘﻮﻗﻒ ﻋﻠﻲ ﺟﻤﻠﺔ ﺷﺮط ،ﺑﺪون وﺟﻮد
ﻗﯿﻤﺔ إﺑﺘﺪاﺋﯿﺔ وﺑﺪون ﺟﻤﻠﺔ ﻟﻠﺰﻳﺎدة أو اﻟﻨﻘﺼﺎن .
اﻟﺼﯿﻐﺔ اﻟﻌﺎﻣﺔ
ﻣﺜﺎل
ﻳﻘﻮم ﺑﻄﺒﺎﻋﺔ اﻷرﻗﺎم ﺑﯿﻦ ١و ٥
><HTML dir=rtl
><Title اﻟﺘﻜﺮار ﺣﻤﻠﺔ >while</Title
><HEAD
>"<SCRIPT LANGUAGE="JavaScript
<!--
;var i = 1
{ ) while( i<6
;) ">document.write( i + "<br
;i++
}
>//--
></SCRIPT
></HEAD
></HTML
82
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
وﻳﻜﻮن اﻟﻨﺎﺗﺞ ﻛﻤﺎ ﻳﻠﻲ :
ﻣﻦ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ ﻻ ﻧﺠﺪ ﻓﺮق ﺑﯿﻦ ﺟﻤﻠﺔ اﻟﺘﻜﺮار whileوﺟﻤﻠﺔ اﻟﺘﻜﺮار for
وﻟﻜﻦ ﺗﻈﮫﺮ اﻟﺤﺎﺟﺔ إﻟﻲ إﺳﺘﺨﺪام ﺟﻤﻠﺔ whileﻋﻨﺪ اﻟﺘﻌﺮض إﻟﻲ ﺗﻨﻔﯿﺬ اﻟﻜﻮد ﺑﺸﻜﻞ ﻣﺘﻜﺮر ﺣﺴﺐ ﺷﺮط ﻏﯿﺮ ﻣﺮﺗﺒﻂ
ﺑﻌﻤﻠﯿﺔ ﺣﺴﺎﺑﯿﺔ ﺗﻜﺮارﻳﺔ ﻛﻤﺎ ﺑﺎﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ :
ﻣﺜﺎل
ﻧﻘﻮم ﻓﻲ ھﺬا اﻟﻤﺜﺎل ﺑﺎﻟﻜﺸﻒ ﻋﻦ ﻛﻠﻤﺔ اﻟﺴﺮ
ﻓﻠﻮ أدﺧﻠﺖ ﻛﻠﻤﺔ اﻟﺴﺮ ﺧﻄﺄ ﻳﺘﻢ إﻋﺎدة إدﺧﺎل ﻛﻠﻤﺔ اﻟﺴﺮ ﺣﺘﻲ ﻳﺘﻢ إدﺧﺎﻟﮫﺎ ﺑﺸﻜﻞ ﺻﺤﯿﺢ
><HTML dir=rtl
ﻛﻠﻤﺔ اﻟﺴﺮ ><Title اﻟﻜﺸﻒ ﻋﻦ ></Title
><HEAD
>"<SCRIPT LANGUAGE="JavaScript
<!--
;"var userPassword = "123
83
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
ﯾﺎ" (alert ﻣﺮﺣﺒﺎ ﺑﻚ \n "ﻛﻠﻤﺔ ﺳﺮ ﺻﺤﯿﺤﺔ ;)
>//--
></SCRIPT
></HEAD
></HTML
ﺗﺘﺸﺎﺑﻪ ﻣﻊ وﻇﯿﻔﺔ ﺟﻤﻠﺔ اﻟﺘﻜﺮار ، whileوﻟﻜﻨﮫﺎ ﺗﺨﺘﻠﻒ ﻓﻲ أن اﻟﻜﻮد اﻟﻤﻮﺟﻮد ﺑﺪاﺧﻠﮫﺎ ﻳﺘﻢ ﺗﻨﻔﯿﺬه ﻣﺮة واﺣﺪة
ﻋﻠﻲ اﻷﻗﻞ ﺣﺘﻲ وﻟﻮ ﻛﺎﻧﺖ ﺟﻤﻠﺔ اﻟﺸﺮط ﺗﺴﺎوي falseﻋﻨﺪ أول ﻣﻘﺎرﻧﺔ ،
ﻷﻧﻪ ﻳﺘﻢ ﺗﻨﻔﯿﺬ اﻟﻜﻮد أوﻻ ﺛﻢ ﻳﺘﻢ ﺗﻨﻔﯿﺬ ﺟﻤﻠﺔ اﻟﺸﺮط .
اﻟﺼﯿﻐﺔ اﻟﻌﺎﻣﺔ
{do
// اﻷﻛﻮاد
( }while ﺷﺮط اﻟﺘﻜﺮار ;)
ﻣﺜﺎل
ﻧﻘﻮم ﻓﻲ ھﺬا اﻟﻤﺜﺎل ﺑﺎﻟﻜﺸﻒ ﻋﻦ ﻛﻠﻤﺔ اﻟﺴﺮ ،ﻓﻠﻮ أدﺧﻠﺖ ﻛﻠﻤﺔ اﻟﺴﺮ ﺧﻄﺄ ﻳﺘﻢ إﻋﺎدة إدﺧﺎل ﻛﻠﻤﺔ اﻟﺴﺮ وﺗﺘﻢ ھﺬه
اﻟﻌﻤﻠﯿﺔ ٣ﻣﺮات ﻣﺘﺘﺎﻟﯿﺔ ﻋﻨﺪ إدﺧﺎل ﻛﻠﻤﺔ ﺳﺮ ﺧﺎﻃﺌﺔ .
><HTML dir=rtl
ﻛﻠﻤﺔ اﻟﺴﺮ ><Title اﻟﻜﺸﻒ ﻋﻦ ></Title
><HEAD
>"<SCRIPT LANGUAGE="JavaScript
<!--
;var userPassword = "123", password
;var failureCount = 0
{do
;failureCount++
;if( failureCount == 4 ) break
ﺻﺤﯿﺤﺔ" (if( failureCount != 1 ) alert "ﻛﻠﻤﺔ اﻟﺴﺮﻏﯿﺮ ;)
84
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
ﻣﺜﺎل
ﺣﺴﺎب اﻟﻤﺘﻮﺳﻂ اﻟﺤﺴﺎﺑﻲ ﻟﻸﻋﺪاد ﻣﻦ ٢٠إﻟﻲ ٨٠
><HTML dir=rtl
اﻟﺤﺴﺎﺑﻲ ><Title اﻟﻤﺘﻮﺳﻂ ></Title
><HEAD
>"<SCRIPT LANGUAGE="JavaScript
<!--
;var count = 0, i
;var sum = 0
ﻣﺜﺎل ﻣﺘﻘﺪم
ﻧﺄﺧﺬ ﻣﻦ اﻟﻤﺴﺘﺨﺪم رﻗﻢ ﺑﺎﻟﻨﻈﺎم اﻟﻌﺸﺮ ي ،ﺛﻢ ﻧﺤﻮﻟﻪ إﻟﻲ اﻟﻨﻈﺎم اﻟﺜﻨﺎﺋﻲ ﻣﻊ ﻋﺮض ﻋﺪد اﻟﺒﺘﺎت اﻟﻤﻜﻮﻧﺔ ﻟﮫﺬا اﻟ ﺮﻗﻢ .
><HTML dir=rtl
اﻟﺜﻨﺎﺋﻲ ><Title اﻟﺘﺤﻮﯾﻞ ﻟﻠﻨﻈﺎم ></Title
><HEAD
>"<SCRIPT LANGUAGE="JavaScript
<!--
;var decimalNumber, binaryNumber
alert(binaryString);
alert(count)
//-->
</SCRIPT>
</HEAD>
</HTML>
86
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
ﺍﻟﻔﺼﻞ ﺍﻟﺴﺎﺩﺱ
ﺍﻟﺪﻭﺍﻝ ﺃﻭ ﺍﻟﻮﻇﺎﺋﻒ
ﺳﻮف ﻧﻨﺎﻗﺶ إن ﺷﺎء اﷲ ﻓﻲ ﻫﺬا اﻟﻔﺼﻞ اﻟﻨﻘﺎط اﻟﺘﺎﻟﯿﺔ :
ﺗﻤﮫﯿﺪ •
ﺗﻌﺮﻳﻒ اﻟﺪوال أو اﻟﻮﻇﺎﺋﻒ •
أﻧﻮاع اﻟﺪوال •
اﻟﺼﯿﻐﺔ اﻟﻌﺎﻣﺔ ﻟﻠﺪوال •
ﺗﻌﺮﻳﻒ اﻟﺪوال •
ﻃﺮﻳﻘﺔ إﺳﺘﺪﻋﺎء اﻟﺪوال •
اﻟﻤﺘﻐﯿﺮات اﻟﻤﺤﻠﯿﺔ واﻟﻌﺎﻣﺔ •
إﺳﺘﺮﺟﺎع اﻟﻘﯿﻢ ﻣﻦ اﻟﺪوال •
ﺗﻤﺮﻳﺮ اﻟﻤﻌﺎﻣﻼت ﻟﻠﺪوال •
إﺳﺘﺪﻋﺎء اﻟﺪاﻟﺔ ﻟﻨﻔﺴﮫﺎ Recursive Function •
داﻟﺔ داﺧﻞ داﻟﺔ inner Function •
87
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
ﺗﻤﮫﯿﺪ
رﺑﻤﺎ ﻛﻨﺎ ﻓﻲ اﻟﻔﺼﻞ اﻟﺴﺎﺑﻖ ﻧﺤﺘﺎج إﻟﻲ إﺳﺘﺨﺪام ﺟﺰء ﻣﻦ اﻟﻜﻮد ﺑﺸﻜﻞ ﺗﻜﺮاري ﻟﺬﻟﻚ إﺣﺘﺠﻨﺎ ﻟﺠﻤﻞ اﻟﺘﻜﺮار ﻣﺜﻞ ﺟﻤﻠﺔ
، forوﻟﻜﻦ ﻟﻮ ﻛﻨﺎ ﻧﺮﻳﺪ إﺳﺘﺨﺪام ﺟﺰء ﻣﻦ اﻟﻜﻮد ﺑﺸﻜﻞ داﺋﻤﺎ ﻓﺴﻮف ﻧﻠﺠﺄ إﻟﻲ إﺳﺘﺨﺪام ﻣﺎ ﻳﺴﻤﻲ ﺑﺎﻟﺪوال أو
اﻟﻮﻇﺎﺋﻒ Functions
ﻓﻘﺪ ﺗﻢ ﺗﻜﺮارھﺎ ﻣﺮﺗﯿﻦ ،ﻓﮫﺐ أﻧﻨﺎ ﺳﻮف ﻧﺴﺘﺨﺪﻣﮫﺎ أﻛﺜﺮ ﻣﻦ ﻣﺮﺗﯿﻦ ﻓﻤﺎ اﻟﺤﻞ
ھﻞ ﻧﻘﻮم ﺑﺘﻜﺮار ھﺬة اﻟﺠﻤﻞ ﻛﻠﻤﺎ إﺣﺘﺠﻨﺎ ﻟﮫﺎ ،ﺑﺎﻟﻄﺒﻊ ھﺬا ﻟﯿﺲ ﺑﺤﻞ ﻳﺮوق ﻟﻚ
وأﻧﺎ ﻣﻌﻚ أن ھﺬا اﻟﺤﻞ ﻻ ﻳﺮوق ﻟﻲ أﻧﺎ أﻳﻀﺎ ،
ﻻ ﺗﻘﻠﻖ اﻟﺤﻞ ﻗﺪ أﺗﻲ ﺑﺤﻤﺪ اﷲ ﻓﺴﻮف ﻧﻘﻮم ﺑﻮﺿﻊ ھﺬﻳﯿﻦ اﻟﺴﻄﺮﻳﻦ داﺧﻞ ﺑﻮﻃﻘﺔ ) داﻟﺔ أو وﻇﯿﻔﺔ ( ،ﻧﺴﺘﻄﯿﻊ ﺗﻨﻔﯿﺬ
ﻣﺎ ﺑﮫﺎ ﻣﻦ اﻷﻛﻮاد وﻗﺘﻤﺎ أردﻧﺎ .
{ )(function displayMessage
ﻣﻮﻗﻌﻨﺎ"(alert ;)"ﻣﺮﺣﺒﺎ ﺑﻚ ﻓﻲ
ﻣﻮﻗﻌﻨﺎ"(document.write ﻣﺮﺣﺒﺎ ﺑﻚ ﻓﻲ ;)"><br
}
وﻟﯿﺲ ھﻨﺎك اي داﻋﻲ ﻟﻤﺤﺎوﻟﺔ ﻓﮫﻢ ﻣﺎ ﻛﺘﺐ اﻷن ،وﻟﻜﻦ ﺗﺎﺑﻊ ﻣﻌﻲ أول إﻧﻄﻼﻗﺔ ﺣﻘﯿﻘﯿﺔ إﻟﻲ ﻋﺎﻟﻢ اﻟﺒﺮﻣﺠﺔ
ﻣﻊ اﻟﺤﺪﻳﺚ ﻋﻦ اﻟﺪوال أو اﻟﻮﻇﺎﺋﻒ .
88
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
واﻟﻮﻇﺎﺋﻒ ھﻲ ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﺠﻤﻞ ﻳﻄﻠﻖ ﻋﻠﯿﮫﺎ إﺳﻢ وﻳﺸﺎر إﻟﯿﮫﺎ ﺑﻪ وﺗﻨﻔﺬ ﻛﻮﺣﺪة واﺣﺪة .
أﻧﻮاع اﻟﺪوال
ﻳﻮﺟﺪ ﻧﻮﻋﯿﻦ ﻣﻦ اﻟﺪوال
-اﻟﺪوال اﻟﻤﺒﻨﯿﺔ داﺧﻞ ﻟﻐﺔ اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ built-in functions
ھﺬه اﻟﻤﺠﻤﻮﻋﺔ ﻣﻦ اﻟﺪوال ﺗﻢ ﺑﻨﺎﺋﮫﺎ داﺧﻞ ﻟﻐﺔ اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ ﻣﺜﻞ داﻟﺔ ، parseIntو ﻳﻤﻜﻨﻨﺎ
أﺳﺘﺨﺪاﻣﮫﺎ ﻛﺄي داﻟﺔ ﻗﻤﻨﺎ ﺑﺘﻌﺮﻳﻔﮫﺎ ﻛﻤﺎ ﺳﻨﺮي ﻓﯿﻤﺎ ﺑﻌﺪ .
-اﻟﺪوال اﻟﻤﺒﻨﯿﺔ ﻣﻦ ﺧﻼل ﻣﺒﺮﻣﺠﻲ اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ
وھﺬا ھﻮ اﻟﻨﻮع ﻣﻦ اﻟﺪوال اﻟﺬي ﺳﻮف ﻧﺘﺤﺪث ﻋﻨﻪ ﻓﻲ ھﺬا اﻟﻔﺼﻞ ﺑﺸﻜﻞ ﻣﻔﺼﻞ .
- ١أوﻻ ﻧﺒﺪأ ﺑﻜﺘﺎﺑﺔ ﻛﻠﻤﺔ functionﺛﻢ ﻳﻠﯿﮫﺎ اﺳﻢ اﻟﺪاﻟﺔ و ﺗﺨﻀﻊ ﻟﻨﻔﺲ ﺷﺮوط ﺗﺴﻤﯿﺔ اﻟﻤﺘﻐﯿﺮات ،ﺑﺎﻹﺿﺎﻓﺔ إﻟﻲ أﻧﮫﺎ ﻻ
ﻳﺠﺐ أن ﺗﺄﺧﺬ اي اﺳﻢ ﻟﺪاﻟﺔ ﻣﺒﻨﯿﺔ داﺧﻞ ﻟﻐﺔ اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ . built-in function
- ٢ﺛﻢ ﻳﺘﻢ ﺗﻤﺮﻳﺮ ﻣﻌﺎﻣﻼت ﻟﮫﺎ أو رﺑﻤﺎ ﻻ ﻳﺘﻢ ﺗﻤﺮﻳﺮ ﻣﻌﺎﻣﻼت ﻟﮫﺎ ﻛﻤﺎ ﺳﻮف ﻧﺮي ﻻﺣﻘﺎ .
- ٣ﺛﻢ ﻳﺘﻢ ﻛﺘﺎﺑﺔ اﻷﻛﻮاد اﻟﻤﺮاد ﺗﻨﻔﯿﺬھﺎ ﺑﯿﻦ أﻗﻮاس اﻟﻤﺠﻤﻮﻋﺔ اﻟﺨﺎﺻﺔ ﺑﺎﻟﺪاﻟﺔ .
- ٤ﺑﻌﺪھﺎ رﺑﻤﺎ ﺗﻘﻮم ھﺬة اﻟﺪاﻟﺔ ﺑﺈرﺟﺎع ﻗﯿﻤﺔ أو ﻻ ﺗﺮﺟﻊ اي ﻗﯿﻢ ﻛﻤﺎ ﺳﻮف ﻧﺮي ﻻﺣﻘﺎ .
ﺗﻌﺮﻳﻒ اﻟﺪوال
دﻋﻨﺎ ﺑﻌﺪﻣﺎ ﻋﻠﻤﻨﺎ اﻟﺼﯿﻐﺔ اﻟﻌﺎﻣﺔ ﻟﻠﺪوال ،أن ﻧﻘﻮم ﺑﻜﺘﺎﺑﺔ اﺣﺪي اﻟﺪوال اﻟﺒﺴﯿﻄﺔ وﻇﯿﻔﺘﮫﺎ ﻋﻤﻞ اﻟﺘﺎﻟﻲ
أﺧﺬ اﺳﻢ اﻟﻤﺴﺘﺨﺪم ،ﺛﻢ إﻇﮫﺎر رﺳﺎﻟﺔ ﺗﺮﺣﯿﺐ ﻟﻪ .
89
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
ﻟﺬﻟﻚ ﺳﻨﻘﻮم ﺑﻌﻤﻞ داﻟﺔ ﺑﺎﺳﻢ showMessageھﺬه اﻟﺪاﻟﺔ ﻻ ﺗﺄﺧﺬ ﻣﻌﺎﻣﻼت وﻻ ﺗﻘﻮم ﺑﺈرﺟﺎع اي ﻗﯿﻢ ﻛﻤﺎ ﻳﻠﻲ
{ )( function showMessage
ﻓﻀﻠﻚ"(var userName = prompt ;)"" ",أدﺧﻞ اﺳﻤﻚ ﻣﻦ
"(alert " ﻣﺮﺣﺒﺎ ﺑﻚ : ;) + userName
}
ﻧﻌﻢ ﻟﻘﺪ ﺗﻤﻜﻨﺎ ﻣﻦ ﺑﻨﺎء ھﺬه اﻟﺪاﻟﺔ إﺳﺘﻨﺎدا ﻋﻠﻲ ﻣﺎ ﺗﻌﻠﻤﻨﺎه ﻟﻠﺼﯿﻐﺔ اﻟﻌﺎﻣﺔ ﻟﻠﺪوال
وﻟﻜﻦ ﻛﯿﻒ ﻳﻤﻜﻨﻨﺎ ﺗﻨﻔﯿﺬ ﻣﺎ ﺑﺪاﺧﻠﮫﺎ ﻣﻦ أﻛﻮاد ؟
ﻟﻺﺟﺎﺑﺔ ﻋﻠﻲ ھﺬا اﻟﺴﺆال أﺗﺒﻌﻨﻲ ﻓﻲ اﻟﻔﻘﺮة اﻟﺘﺎﻟﯿﺔ
اﻟﺪاﻟﺔ اي ﺗﻨﻔﯿﺬ ﻣﺎ ﺑﺪاﺧﻠﮫﺎ ﻣﻦ أﻛﻮاد ،وﻳﻤﻜﻨﻨﺎ إﺳﺘﺪﻋﺎء اﻟﺪوال ﺑﻌﺪة أﺷﻜﺎل أﺣﺪھﻤﺎ : ﻧﻌﻨﻲ ﺑﺈﺳﺘﺪﻋﺎء
إﺳﺘﺪﻋﺎء داﻟﺔ ﻣﻦ ﺧﺎرج اي داﻟﺔ -
إﺳﺘﺪﻋﺎء داﻟﺔ ﻣﻦ داﺧﻞ داﻟﺔ -
إﺳﺘﺪﻋﺎء داﻟﺔ ﻟﻨﻔﺴﮫﺎ Recursive function -
وھﺬا اﻟﻨﻮع ﻣﻦ اﻟﺪوال أﻛﺜﺮ ﺻﻌﻮﺑﺔ ،ﺳﯿﺘﻢ ﻧﻘﺎﺷﻪ ﻓﻲ أﺧﺮ ھﺬا اﻟﻔﺼﻞ
ﻣﺜﺎل
><HTML dir=rtl
اﻟﺪوال ><Title ﻧﺪاء ></Title
><HEAD
>"<SCRIPT LANGUAGE="JavaScript
<!--
>//--
></SCRIPT
></HEAD
></HTML
90
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
ﺟﻤﯿﻞ ﺟﺪا ﻟﻘﺪ ﺗﻢ ﺗﻨﻔﯿﺬ أﻛﻮاد ھﺬا اﻟﺪاﻟﺔ ﺑﻤﺠﺮد ﻛﺘﺎﺑﺔ اﺳﻤﮫﺎ ﻣﺘﺒﻮﻋﺎ ﺑﺄﻗﻮاس ﻛﻤﺎ ﺑﺎﻟﺴﻄﺮ اﻟﺘﺎﻟﻲ
ﻻﺣﻆ ﻣﺎ ھﻮ أت
رﺑﻤﺎ ﻧﺤﺘﺎج ﻓﻲ ﺑﻌﺾ اﻷﺣﯿﺎن ﻟﻌﻤﻞ أﻛﺜﺮ ﻣﻦ داﻟﺔ ،ورﺑﻤﺎ ﻧﺤﺘﺎج ﻟﺘﻨﻔﯿﺬ أﺣﺪي اﻟﺪوال ﻣﻦ داﺧﻞ داﻟﺔ أﺧﺮي
ﻛﻤﺎ ﺑﺎﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ
ﻣﺜﺎل
><HTML dir=rtl
ﻟﺒﻌﺾ ><Title ﻧﺪاء اﻟﺪوال ﺑﻌﻀﻬﺎ ></Title
><HEAD
>"<SCRIPT LANGUAGE="JavaScript
<!--
;var userName
91
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
// ﺗﻌﺮﯾﻒ اﻟﺪاﻟﺔ
getName
{ )( function getName
ﻓﻀﻠﻚ"(userName = prompt ;)"" ",أدﺧﻞ اﺳﻤﻚ ﻣﻦ
}
>//--
></SCRIPT
></HEAD
></HTML
;var userName
وھﺬا ﻳﻘﻮدﻧﺎ إﻟﻲ ﻛﯿﻔﯿﺔ ﺗﻌﺎﻣﻞ اﻟﺪوال ﻣﻊ اﻟﻤﺘﻐﯿﺮات ،وﻹﻛﺘﺸﺎ ف ھﺬا دﻋﻨﺎ ﻧﻨﺘﻘﻞ ﻟﻠﻔﻘﺮة اﻟﺘﺎﻟﯿﺔ .
إذا ﺗﻢ ﺗﻌﺮﻳﻒ اﻟﻤﺘﻐﯿﺮ داﺧﻞ داﻟﺔ ،ﻓﻠﻦ ﺗﺴﺘﻄﯿﻊ ﻋﺮض أو ﺗﻌﺪﻳﻞ ﻗﯿﻤﺔ ھﺬا اﻟﻤﺘﻐﯿﺮ إﻻ ﻣﻦ داﺧﻞ ھﺬة اﻟﺪاﻟﺔ اﻟﻤﻌﺮف ﺑﮫﺎ
وﻻ ﻳﻤﻜﻨﻚ ﻋﺮض أو ﺗﻌﺪﻳﻞ ﻣﺤﺘﻮﻳﺎت ھﺬا اﻟﻤﺘﻐﯿﺮ ﻣﻦ داﺧﻞ داﻟﺔ أﺧﺮي ،وﻳﺴﻤﻲ ھﺬا اﻟﻤﺘﻐﯿﺮ ﺑﻤﺘﻐﯿﺮ ﻣﺤﻠﻲ Local
variableﻛﻤﺎ ﺑﺎﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ
ﻣﺜﺎل
ﻛﻤﺎ ﺑﺎﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ ﻧﺠﺪ أن اﻟﻤﺘﻐﯿﺮ اﻟﻤﺴﻤﻲ userJobﺗﻢ ﺗﻌﺮﻳﻔﻪ داﺧﻞ اﻟﺪاﻟﺔ ، getJobﻟﺬﻟﻚ ﻳﻌﺘﺒﺮ ھﺬا اﻟﻤﺘﻐﯿﺮ
ﻣﺘﻐﯿﺮ ﻣﺤﻠﻲ ﺑﺎﻟﻨﺴﺒﺔ ﻟﻠﺪاﻟﺔ getJobوﻻ ﻳﻤﻜﻦ اﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻤﺘﻐﯿﺮ userJobﻣﻦ ﺧﺎرج ھﺬه اﻟﺪاﻟﺔ أو ﻣﻦ داﺧﻞ داﻟﺔ
ﺧﺎرﺟﯿﺔ أﺧﺮي.
وﻟﻮ ﻗﻤﻨﺎ ﺑﻌﺮض ﻗﯿﻤﺔ اﻟﻤﺘﻐﯿﺮ userJobﻣﻦ داﺧﻞ اﻟﺪاﻟﺔ showJobﺳﯿﺆدي ذﻟﻚ ﻟﺤﺪوث ﺧﻄﺄ ﻛﻤﺎ ﺑﺎﻟﺴﻄﺮ اﻟﺘﺎﻟﻲ
93
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
ﻣﻼﺣﻈﺔ ھﺎﻣﺔ
ﻳﻤﻜﻨﻚ إﺳﺘﺨﺪام ﻧﻔﺲ اﺳﻢ اﻟﻤﺘﻐﯿﺮ ﻓﻲ أﻛﺜﺮ ﻣﻦ داﻟﺔ ﺑﺸﺮط أن ﻳﺘﻢ ﺗﻌﺮﻳﻔﻪ داﺧﻞ ﻛﻞ داﻟﺔ ﻋﻠﻲ ﺣﺪي ،وﺳﻮف ﻳﺘﻢ
اﻟﺘﻌﺎﻣﻞ ﻣﻊ ﻛﻞ ﻣﺘﻐﯿﺮ ﻋﻠﻲ ﺣﺪي داﺧﻞ اﻟﺪاﻟﺔ اﻟﻤﻌﺮف ﺑﮫﺎ ﻛﻤﺎ ﺑﺎﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ
ﻣﺜﺎل
><HTML dir=rtl
اﻟﻤﺤﻠﯿﺔ ><Title اﻟﻤﺘﻐﯿﺮات ></Title
><HEAD
>"<SCRIPT LANGUAGE="JavaScript
<!--
;)(func1
;)(func2
>//--
></SCRIPT
></HEAD
></HTML
ﻛﻤﺎ ﺑﺎﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ ﻧﺠﺪ أن اﻟﻤﺘﻐﯿﺮ اﻟﻤﺴﻤﻲ userNameﺗﻢ ﺗﻌﺮﻳﻔﻪ داﺧﻞ اﻟﺪاﻟﺔ func1و اﻟﺪاﻟﺔ ، func2ﻟﻜﻦ ﻳﺘﻢ
اﻟﺘﻌﺎﻣﻞ ﻣﻊ ھﺬا اﻟﻤﺘﻐﯿﺮ ﻋﻠﻲ أﺳﺎس أﻧﮫﻢ ﻣﺘﻐﯿﺮﻳﻦ ﻛﻼ ﺣﺴﺐ ﻣﻜﺎن ﺗﻌﺮﻳﻔﻪ داﺧﻞ اﻟﺪاﻟﺔ .
94
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
95
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
إذا ﺗﻢ ﺗﻌﺮﻳﻒ اﻟﻤﺘﻐﯿﺮ ﺧﺎرج ﻧﻄﺎق اي داﻟﺔ اي ﻋﻠﻲ ﻣﺴﺘﻮي اﻷﺳﻜﺮﺑﺖ اﻟﻌﺎم ،ﺑﮫﺬا ﺗﺴﺘﻄﯿﻊ ﻋﺮض أو ﺗﻌﺪﻳﻞ ﻗﯿﻤﺔ ھﺬا
اﻟﻤﺘﻐﯿﺮ ﻣﻦ داﺧﻞ أي داﻟﺔ أو ﻣﻦ ﺧﺎرﺟﮫﻤﺎ ،وﻳﺴﻤﻲ ھﺬا اﻟﻤﺘﻐﯿﺮ ﺑﻤﺘﻐﯿﺮ ﻋﺎم Global variableﻛﻤﺎ ﺑﺎﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ
ﻣﺜﺎل
;var userName
ﻛﻤﺎ ﺑﺎﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ ﻧﺠﺪ أن اﻟﻤﺘﻐﯿﺮ اﻟﻤﺴﻤﻲ userNameﺗﻢ ﺗﻌﺮﻳﻔﻪ ﻓﻲ اﻟﻜﻮد ﺧﺎرج ﻧﻄﺎق اي داﻟﺔ ،وﻗﺪ ﺗﻢ ﺗﻐﯿﺮ
ﻗﯿﻤﺔ اﻟﻤﺘﻐﯿﺮ userNameﻣﻦ داﺧﻞ اﻟﺪاﻟﺔ ، getNameوﺗﻢ ﻋﺮض ﻗﯿﻤﺘﻪ ﻣﻦ داﺧﻞ اﻟﺪاﻟﺔ showMessage
96
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
ﻣﺜﺎل
><HTML dir=rtl
اﻟﺪوال ><Title إﺳﺘﺮﺟﺎع اﻟﻘﯿﻢ ﻣﻦ ></Title
><HEAD
>"<SCRIPT LANGUAGE="JavaScript
<!--
وﻛﻤﺎ ﻧﺮي ﻳﺘﻢ ﺗﻨﻔﯿﺬ اﻷﻣﺮ promptوﻳﺘﻢ ﺗﺨﺰﻳﻦ اﻟﻘﯿﻤﺔ اﻟﺮاﺟﻌﺔ ﻣﻨﻪ ﻓﻲ اﻟﻤﺘﻐﯿﺮ اﻟﻤﺴﻤﻲ userName
ﺛﻢ ﻳﺘﻢ إﻧﮫﺎء اﻟﺪاﻟﺔ واﻟﺨﺮوج ﻣﻨﮫﺎ ﺑﺘﻨﻔﯿﺬ اﻷﻣﺮ اﻟﺘﺎﻟﻲ
;return userName
وﻳﻘﻮم اﻷﻣﺮ returnﺑﻌﻤﻞ ﺷﯿﺌﯿﻦ أوﻟﮫﻤﺎ إرﺟﺎع اﻟﻘﯿﻤﺔ اﻟﺘﺎﻟﯿﺔ ﻟﻪ ،ﺛﻢ إﻧﮫﺎء ﺗﻨﻔﯿﺬ اﻟﺪاﻟﺔ .
97
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
ﺑﻌﺪ إﻧﺘﮫﺎء ﺗﻨﻔﯿﺬ اﻟﺪاﻟﺔ ،ﻳﻘﻮم ﻣﻔﺴﺮ اﻟﻠﻐﺔ interpreterﺑﺎﻹﻧﺘﻘﺎل إﻟﻲ ﻣﻜﺎن إﺳﺘﺪﻋﺎء اﻟﺪاﻟﺔ ﻛﻤﺎ ﺑﺎﻟﺴﻄﺮ اﻟﺘﺎﻟﻲ
ﻣﻼﺣﻈﺔ
ﻻﺣﻆ أن اي أﻣﺮ ﻳﻜﺘﺐ ﺑﻌﺪ اﻷﻣﺮ returnﻻ ﻳﺘﻢ ﺗﻨﻔﯿﺬه ،ﻷﻧﻨﺎ ﻛﻤﺎ أﺷﺮﻧﺎ إﻟﻲ أن ﺑﻤﺠﺮد ﺗﻨﻔﯿﺬ اﻷﻣﺮ returnﻳﺘﻢ إرﺟﺎع
اﻟﻘﯿﻤﺔ اﻟﺘﺎﻟﯿﺔ ﻟﻪ ،ﺛﻢ إﻧﮫﺎء اﻟﺪاﻟﺔ
ﻣﺜﺎل
><HTML dir=rtl
اﻟﺪوال ><Title إﺳﺘﺮﺟﺎع اﻟﻘﯿﻢ ﻣﻦ ></Title
><HEAD
>"<SCRIPT LANGUAGE="JavaScript
<!--
ﻓﻌﻨﺪ ﺗﺸﻐﯿﻞ ھﺬا اﻟﻜﻮد ﻟﻦ ﺗﻈﮫﺮ رﺳﺎﻟﺔ إﻟﻲ اﻟﻠﻘﺎء ﻷﻧﮫﺎ أﺗﺖ ﺑﻌﺪ اﻷﻣﺮ returnﻛﻤﺎ ھﻮ ﻣﻮﺿﺢ
98
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
ﻣﺜﺎل
><HTML dir=rtl
اﻟﺪوال ><Title ﺗﻤﺮﯾﺮ اﻟﻘﯿﻢ إﻟﻲ ></Title
><HEAD
>"<SCRIPT LANGUAGE="JavaScript
<!--
;var GuestName
;)"اﻟﺤﺴﯿﻦ"(setGuestName
;) alert( GuestName
>//--
></SCRIPT
></HEAD
></HTML
ﺛﻢ ﻳﺘﻢ إﺳﺘﺨﺪام ھﺬا اﻟﻤﻌﺎﻣﻞ ﻋﻠﻲ اﻧﻪ ﻣﺘﻐﯿﺮ ﻣﻌﺮف داﺧﻞ اﻟﺪاﻟﺔ ﻛﻤﺎ ھﻢ ﻣﺒﯿﻦ ﺑﺎﻟﺴﻄﺮ اﻟﺘﺎﻟﻲ
99
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
ﻣﺜﺎل
ﻧﺮﻳﺪ ﻋﻤﻞ داﻟﺔ ﻳﺘﻢ ﺗﻤﺮﻳﺮ ﻣﻌﺎﻣﻠﯿﻦ ﻟﮫﺎ ﺛﻢ ﺗﻘﻮم ﺑﺈرﺟﺎع اﻟﻘﯿﻤﺔ اﻷﻛﺒﺮ ﻟﻠﻘﯿﻤﺘﯿﻦ
><HTML dir=rtl
اﻟﺪوال ><Title ﺗﻤﺮﯾﺮ اﻟﻘﯿﻢ إﻟﻲ ></Title
><HEAD
>"<SCRIPT LANGUAGE="JavaScript
<!--
ﺛﻢ ﺗﻘﻮم ﺑﺈرﺟﺎع اﻟﻘﯿﻤﺔ اﻷﻛﺒﺮ ﻟﻠﻌﺪدﻳﻦ اﻟﻤﻤﺮران ﻟﮫﺎ ﻛﻤﺎ ﻳﻠﻲ
100
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
ﻣﺜﺎل
><HTML dir=rtl
اﻟﺪوال ><Title ﺗﻤﺮﯾﺮ اﻟﻘﯿﻢ إﻟﻲ ></Title
><HEAD
>"<SCRIPT LANGUAGE="JavaScript
<!--
>//--
></SCRIPT
></HEAD
></HTML
ﺗﻢ إﺳﺘﺪﻋﺎء اﻟﺪاﻟﺔ dispalyHelloMessageﻣﺮﺗﯿﻦ أﺣﺪھﻤﺎ ﺗﻢ ﺗﻤﺮﻳﺮ اﻟﻤﻌﺎﻣﻞ اﻟﺜﺎﻧﻲ ﻟﮫﺎ ﺑﻘﯿﻤﺔ true
واﻷﺧﺮ ﻟﻢ ﻳﻤﺮر ﻟﮫﺎ إﻻ اﻟﻤﻌﺎﻣﻞ اﻷول ﻓﻘﻂ ﻛﻤﺎ ﻳﻠﻲ
>//--
></SCRIPT
101
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
ﻓﯿﮫﺎ ﻻ ﻳﺘﻢ ﻋﻤﻞ اي ﻣﻌﺎﻣﻼت ﻟﻠﺪاﻟﻪ وﻟﻜﻦ ﻳﺘﻢ ﺗﻤﺮﻳﺮ ﻣﻌﺎﻣﻼت ﻟﻠﺪاﻟﻪ ﺑﻌﺪد ﻏﯿﺮ ﻣﺤﺪد
اي ﻳﻤﻜﻨﻚ ﺗﻤﺮﻳﺮ اي ﻋﺪد ﻣﻦ اﻟﻘﯿﻢ .
ﻣﺜﺎل
ﻧﺮﻳﺪ ﻋﻤﻞ داﻟﺔ ﻳﻤﺮر ﻟﮫﺎ اي ﻋﺪد ﻣﻦ اﻟﻤﻌﺎﻣﻼت ﺛﻢ ﺗﻘﻮم ﺑﺈرﺟﺎع اﻟﻘﯿﻤﺔ اﻷﻛﺒﺮ ﻟﮫﺬه اﻟﻘﯿﻢ
><HTML dir=rtl
اﻟﺪوال ><Title ﺗﻤﺮﯾﺮ اﻟﻘﯿﻢ إﻟﻲ ></Title
><HEAD
>"<SCRIPT LANGUAGE="JavaScript
<!--
;return max
}
>//--
></SCRIPT
></HEAD
></HTML
وھﺬا اﻟﻤﺜﺎل أﻗﺪﻣﻪ ﻟﻜﻢ اﻷن ﺑﺪون ﺷﺮح ﺣﺘﻲ ﻧﺘﻨﺎول اﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻤﺼﻔﻮﻓﺎت ﻓﻲ اﻟﺠﺰء اﻟﺜﺎﻟﻲ ﻣﻦ اﻟﻜﺘﺎب
102
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
ﻛﻤﺎ أﺷﺮﻧﺎ ﺳﺎﺑﻘﺎ أﻧﻨﺎ ﻳﻤﻜﻨﻨﺎ إﺳﺘﺪﻋﺎء داﻟﺔ ﻣﻦ داﺧﻞ داﻟﺔ أﺧﺮي وﻗﻤﻨﺎ ﺑﺘﻄﺒﯿﻖ أﻣﺜﻠﺔ ﻟﺬﻟﻚ اﻟﻐﺮض
وﻟﻜﻦ ھﻞ ﻳﻤﻜﻦ ﻟﺪاﻟﺔ أن ﺗﺴﺘﺪﻋﻲ ﻧﻔﺴﮫﺎ ﻣﻦ داﺧﻠﮫﺎ ؟
أﺟﯿﺐ ﺑﻨﻌﻢ ،وﻟﻜﻦ ﺑﺸﺮط وﺿﻊ ﺷﺮط ﻳﻨﮫﻲ إﺳﺘﺪﻋﺎء اﻟﺪاﻟﺔ ﻟﻨﻔﺴﮫﺎ وإﻻ ﺳﻮف ﻳﺪﺧﻞ اﻟﺒﺮﻧﺎﻣﺞ ﻓﻲ ﺣﻠﻘﺔ ﻣﻦ اﻟﺪورات
ﻏﯿﺮ ﻣﻨﺘﮫﯿﻪ infinite loop
ﻣﺜﺎل ﻋﻠﻲ ذﻟﻚ ﻋﻤﻞ داﻟﺔ رﻳﺎﺿﯿﺔ ﺗﻘﻮم ﺑﺤﺴﺎب اﻟﻤﻀﺮوب اﻟﺮﻳﺎﺿﻲ Factorialﻟﻘﯿﻤﺔ اﻟﻤﻌﺎﻣﻞ اﻟﻤﻤﺮر ﻟﮫﺎ
ﻳﺘﻢ ﺣﺴﺎب اﻟﻤﻀﺮوب اﻟﺮﻳﺎﺿﻲ ﺑﺎﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ
ﻣﻀﺮوب ٣ﻳﺴﺎوي ١ x ٢ x ٣
و ﻣﻀﺮوب ٤ﻳﺴﺎوي ١ x ٢ x ٣ x ٤
و ﻣﻀﺮوب ٥ﻳﺴﺎوي ١ x ٢ x ٣ x ٤ x ٥
ﻣﺜﺎل
><HTML dir=rtl
اﻟﻤﻀﺮوب ><Title ﺣﺴﺎب ></Title
><HEAD
>"<SCRIPT LANGUAGE="JavaScript
<!--
>//--
></SCRIPT
></HEAD
></HTML
103
ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ اﻟﻤﺴﺘﻮي اﻷول
}
وھﺬا اﻟﻨﻮع اﻟﻤﺘﻘﺪم ﻣﻦ اﻟﺪوال ﺳﻮف ﻳﺘﻢ ﺷﺮﺣﻪ ﻓﻲ اﻟﺠﺰء اﻟﺜﺎﻟﺚ ﻣﻦ ھﺬا اﻟﻜﺘﺎب اﻟﺨﺎص ﺑﺎﻟﺒﺮﻣﺠﺔ اﻟﻜﺎﺋﻨﯿﺔ ﻟﻠﺠﺎﻓﺎ
ﺳﻜﺮﺑﺖ .
104