* Променливи
Публикувано на 03 септември 2009 в раздел ХHTML.
Променливите в JavaScript се дефинират чрез ключова дума var последвана от името на променливата. Когато искаме да предадем стойност, то използваме знак за равенство. Според стойността, която предаваме се определя автоматично и типа на променливата. Например ако подадем цяло число, то автоматично променливата става от целочислен тип. Ако пък подадем символен низ, то променливата става символен низ.
Ще започнем с целочислен тип променливи. Ето един пример:
<script type="text/javascript"> var x = 5; var y; y = 6; var z = x * y; document.write("x+y="+(x+y)+"<br />z="+z); </script>
Резултатът, който ще излезе на екрана е:
x+y=11
z=30
В този пример забелязваме няколко важни неща за document.write() функцията. На първо време - можем да изкарваме по няколко типа данни наведнъж. Обърнете внимание на следното:
document.write("x+y="+(x+y));
НЕ Е едно и също с
document.write("x+y="+x+y);
Първото ще изкара резултат x+y=11, а второто x+y=56 (5 е стойността на x, а 6 на y). Тоест ако искаме в document.write да се сумират променливи, то ги ограждаме в скоби. Малко по-долу ще обясним защо се получава така.
В този пример използвахме и умножение (var z = x * y). Както във всички езици за програмиране и в JavaScript са налични петте основни операции за целочислен тип:
- Събиране: var x = 3+2 // x=5
- Изваждане: var x = 3-2 // x=1
- Умножение: var x = 3*2 // x=6
- Деление: var x = 7/2 // x=3.5 !!!
- Остатък от деление: var x = 7%2 // x=1
Тук виждаме и първата съществена разлика от нормалните езици за програмиране. Делението на две целочислени числа, които имат остатък, автоматично дава резултат реално число!
При низовите променливи няма изненади. Дефинират се стандартно:
<script type="text/javascript"> var niz1 = "Hello "; var niz2 = "World"; var niz3 = niz1 + niz2; document.write(niz3); </script>
Виждате, че е дефинирана и операция "сбор на низове". Това означава, че просто слепваме двата низа един до друг. Всички символни низове се ограждат в двойни кавички.
Когато имаме сбор на низ с число, то резултатът е низ. Например "string"+5 ще даде резултат "string5". Тук вече можем да си обясним поведението на document.write от по-горе. Написано като "x+y="+x+y ставаше следното - първо към низ "x+y" се добавя стойността на променливата x и се получава низ "x+y=5". След това към низ "x+y=5" се добавя стойността на променливата y и се получава низ "x+y=56". Когато поставим скоби се получава друго нещо. Написано като "x+y="+(x+y) се извършват първо операциите в скобите. Тъй като в скобите имаме само числа, то ще се изчисли техния сбор, което е резултат число - 5+6=11. След това към низ "x+y=" се долепва стойността, която е изчислена в скобите и се получава резултат низ "x+y=11". Затова бъдете изключително внимателни, когато миксирате различни променливи!
Задача: Напишете скрипт, който пресмята и извежда на екрана дискриминантата на квадратно уравнение с коефициенти a=-2, b=-1 и c=3.
Ами принципно, нещо което не съм написал е, че знакът "долар" ($) заедно с долна черта (_) са си просто позволени символи за имена на променливи. С други думи дали една променлива ще я именоваме "microSoft" или "micro$oft" няма никакво значение. Някои хора слагат $ в началото на името на променливите, за да им придадат "по-Perl" или "по-PHP" вид. По този начин лесно се забелязват имената на променливите в кода.
Попринцип при първоначалния дизайн на JavaScript се е смятало, че променливи започващи с $ по конвенция ще означават "mechanically generated code" (механично (?) генериран код), т.е. аз го разбирам като код генериран от компютърен софтуер. Това обаче бързо е отпаднало и никой не го спазва.
Аз лично НЕ използвам $ в началото на имената на променливите. Много хора обаче го правят. Въпрос на вкус е.
П.П. Всъщност сега погледнах детайли и се оказва, че за имена на променливи в JavaScript се позволяват почти всички символи (май е по-добре да се изведе лист със символи, които НЕ може да се ползват). Например var Ø = 5 си е нещо съвсем разрешено. Аз обаче не бих се възползвал от такива екстри - лично аз се ограничавам с a-z, A-Z и 0-9.
Интересно ми е какво мислиш за употребата на $ в имената на променливите? Тоест знака $ да се поставя в началото на всяка променлива.
Аз съм един от хората, които използват $ за отделяне на променливите от другия код. Както ти сам каза - по-лесно се забелязват в кода и поне за мен сорса става по-четим.
jQuery пък от своя страна също сполучливо използват знака $.
Е, както казах в JavaScript е "въпрос на вкус" :)