深入研究JScript語法——常量和變量
例子:前面的例子中:
return "<font color=gray>"+hit+"</font>"
使用了變量和常量,"<font color=gray>"和"</font>"是文本常量,hit是變量。
加號(+)則將三者加成一個文本:"<font color=gray>100</font>",如果hit為100的話。
數(shù)值常量
這個很簡單,上過數(shù)學(xué)課的都應(yīng)該知道如何表示數(shù)字,JScript中沒有任何特別。
123
0
-100
100.123
1E3 (1000)
都是合法的數(shù)字常量
文本常量
這個用的最多,因?yàn)榻?jīng)常要動態(tài)的生成HTML文本。常量必須用引號括起來:
"abc"
"123"
"文本常量"
都是合法的文本常量,為什么要用引號?完全沒有編程經(jīng)驗(yàn)的人可能會有些疑惑,其實(shí)很簡單,
計算機(jī)需要把常量和變量區(qū)別開。
變量賦值
a = "abc"
變量a的值為"abc"了。為什么比較時要用==,為了和賦值區(qū)別開呀!
b = a + "123"
變量b的值為"abc123"了。如果常量不加引號如何和變量區(qū)別呢?
b = "a" + "123"
變量b的值為"a123"
那么如果文本中包含引號如何?比如如何表示:
<input type=button value="A A">
因?yàn)榘粹o的名稱里有空格,那么必須用雙引號括起來,如何表示這個文本常量?
JScript還可以使用單引號:
'<input type=button value="A A">'
在單引號中就可以直接使用雙引號了。反過來在雙引號括起來的常量里可以直接使用單引號。
"<input type=button value='A A'>"
那么當(dāng)常量里兩個引號都有該怎么辦?這就需要使用轉(zhuǎn)義符號反斜杠\
"abc'def\"ghi"
在常量中可以用“\"”來表示一個雙引號。而且還有:
\r\n 表示回車
\\ 表示一個反斜杠
function myname(name){
if (name=="小青"){
document.write("<input type=button value='隱藏小青' onclick=\"mytext.style.display='none'\">")
}
else
document.write(name)
}
上面的函數(shù),當(dāng)輸入name為“小青”時,輸出:
<input type=button value='隱藏' onclick="mytext.style.display='none'">
變量定義
JScript中可以不預(yù)先定義變量就直接使用,但是這樣往往會帶來潛在問題,
所以建議大家使用變量前都先定義好。
變量有兩種類型,定義在函數(shù)內(nèi)部的為局部變量。
<script>
function myfunc(){
//變量定義使用var,下面定義了變量a
var a
//可以一次定義多個變量,用逗號分開
var i,j,k
//定義的時候還可以給變量賦初值
var a="acb"
var a=123,b="ddd"
}
</script>
局部變量只在函數(shù)內(nèi)有效,離開函數(shù)該變量就不存在了。
如果定義在函數(shù)外則為全局變量:
<script>
//定義一個全局變量a
var a
</script>
該變量在所有函數(shù)內(nèi)外都將有效,除非函數(shù)內(nèi)定義了一個相同名稱的變量
<script>
//定義全局變量a
var a=100
function myfunc(){
var a="abc"
//函數(shù)輸出的是abc,函數(shù)內(nèi)的變量屏蔽了同名全局變量
document.write(a)
}
</script>
如果不使用var來定義,那么變量是全局變量。因此如果你不明確定義變量在使用,
就可能誤用了全局變量,比如:
<script>
//定義全局變量a
var a="dddd"
...
function myfunc(){
//函數(shù)內(nèi)只想使用一個臨時的變量保存返回結(jié)果
a=b+...
...
return a
}
</script>
那么一旦執(zhí)行過myfunc,則原先的全局變量的值就被破壞了,這就可能引起其實(shí)使用
該全局變量的程序出錯!因此強(qiáng)烈建議大家都明確定義變量,而且盡量少使用全局變量
posted on 2008-10-14 09:48 小卓 閱讀(185) 評論(0) 編輯 收藏 所屬分類: html and js