jsp是一種弱類型的交而不能語音,雖然看似沒有像強類型語言那么多的代碼規范,但是在實際使用的過程當中依然有不少的問題。下面就簡單的梳理一下。
1.首先,jsp是一種弱類型的腳本語言,變量在使用之前無需顯示的聲明,而且在不同的時候同一個變量可以代表不同類型的數值,即變量的數據類型是可以隨時轉換的。jsp的變量類型是在解釋的時候動態轉化的,需要注意的是,其字符串類型是需要用引號引起來的,這里的引號可以是單引號也可以是雙引號,undefinde類型是指一個已經創建但是還沒有指定初始值的數據。大家可以從下面的代碼當中略知一二。
2.jsp變量作用域的問題。jsp里面的變量分為兩種,一種是全局變量,一種是局部變量。定義在函數function塊里面的變量就是局部變量,局部變量的作用域不是定義變量的那個代碼塊,而是整個函數。因此不論在函數的哪個位置定義了一個變量,只要在函數中都可以使用這個變量。看下面的代碼。
當你看到這里的時候,你也許會問為什么第一次輸出是undefined 而第二次輸出是3呢。這是因為jsp當中,如果你在一個函數當中顯式的即使用var關鍵字定義了一個變量,那么在這個函數當中的任何位置都可以使用這個變量,只是在第一次賦值之前,這個變量的值是undefined。下面我再帶大家做一個小小的測試。
細心的你不難發現,我在這里只是把var去掉了。但是出現了一個很奇怪的結果,那就是報錯了。什么錯誤呢,在瀏覽器調試的結果是a沒有定義,因為沒有任何的輸出,說明程序執行到第一個document.writeln(a)就出錯了。但是如果你把這一行去掉的話,你就會發現程序又能正確的運行了。
所以我們能夠得出一個重要的結論,那就是在jsp里面,如果顯式的用var關鍵字定義了一個變量,那么在這個變量的作用域內都可以使用這個變量,只是在沒有賦值之前,變量的值是undefined。但是如果沒有顯式的定義一個變量,那么只能在為它賦值之后才可以使用。
所以,即使是在這種弱類型的語言里面,我在使用變量的時候,也要中規中矩的給它一個顯式的定義,不要直接去使用它,不然會出現很多我們意想不到的錯誤。