被人問起一個問題:
複製代碼代碼如下:
<script language = "JavaScript">
<script type="text/javascript">
<script>
這三個標籤的使用有什麼區別?
雖然一直在用,卻也沒有好好去弄清楚,這裡詳細說明一下。
查閱一些資料,主要是瀏覽器支持問題。 type 和language 屬性都可用來指定<script> 標籤中的腳本的類型。 language 屬性在HTML 和XHTML 標準中受到了非議,這兩個標準提倡使用type 屬性。遺憾的是,這兩個屬性的值是不一樣的。
您可能偶爾會看見language 的值為VBScript(對type 而言是text/vbscript),表示包含的腳本代碼是用Microsoft 的Visual Basic Script 編寫的。
利用JavaScript,您還可以使用language 的值"JavaScript 1.1",表示包含的腳本語句只能被Netscape 3.0 或更新的版本處理。 Netscape 2.0 只支持JavaScript 1.0,而無法處理標記為"JavaScript 1.1" 的腳本。
為了保證腳本程序可以正常執行,除非特意使用僅IE 支持的VBScript 和Script Encoder 機制外,應當將SCRIPT 標記的"type" 屬性設置為"javascript",並且不要設置已經廢棄的"Languange" 屬性。
各瀏覽器對於"type" 和"language" 屬性本身均支持,但是對於其中設置的腳本語言類型識別與支持各異:
"type" 和"language" 同時存在時,所有瀏覽器均優先識別"type" 屬性內的腳本類型;
其中IE 瀏覽器實際支持JScript 和VBScript 腳本語言標示以及Script Encoder 加密;
Firefox Chrome Safari Opera 對"type" 屬性值的具體識別寬容度不一致,相對Chrome Safari 對屬性值正確性校驗更加寬鬆,Firefox 的校驗最為嚴格;
在"Language" 屬性值識別寬容度比較中,各瀏覽器中Chrome Safari 依然最為寬鬆,IE 最為嚴格,Firefox 與Opera 持平;
Language Encode 比較中,只有IE 支持JScript.Encoder 以及VBScript.Encoder 類型設置,Firefox Chrome Safari均不支持,Opera 中則是該屬性值被修復為默認的Javascript 腳本語言後才有輸出值。
複製代碼代碼如下:
<script language="javascript">
function a() {
b = "a";
}
a();
alert(b);
</script>
關於變量有一個問題,即使你在函數內如同上面那樣聲明變量,它就會變成全局變量。
如果用var 聲明就會有一個問題。
複製代碼代碼如下:
<script language="javascript">
function a() {
var b = "a";
delete b;
alert(b);
}
a();
</script>
結果依然會彈出a。
為了保證腳本程序可以正常執行,除非特意使用僅IE 支持的VBScript 和Script Encoder 機制外,應當將SCRIPT 標記的"type" 屬性設置為"javascript",並且不要設置已經廢棄的"Languange" 屬性。