您的位置:首頁>正文

JavaScript高級程式設計——學習筆記(四)

1.全域變數不能通過delete操作符刪除, 而直接在window物件上定義的屬性可以。

var age = 29; window.color = "red"; delete age;//無法刪除 delete color;//可以刪除 alert(window.age);//29 alert(window.color);//undefined

2.嘗試訪問未聲明的變數會拋出錯誤, 但通過查詢window物件可以知道某個可能未聲明的變數是否存在。

var newValue = oldValue;//會拋錯, 因為oldValue未定義 var newValue = window.oldValue;//不會出錯, 因為這是一次屬性查詢, newValue的結果是undefined

3.location物件查詢字串參數

雖然location.search可以返回從問號到URL末尾的所有內容, 但卻沒有辦法逐個訪問其中的每個查詢字串參數。 為此, 可以創建下面這樣一個函數, 用以解析查詢字串, 然後返回包含所有參數的一個物件:

function getQueryStringArgs{ //取得查詢字串並去掉開頭的問號 var qs = (location.search.length > 0 ? location.search.substring(1) : ""); //保存資料的物件 var args = ; //取得每一項 var items = qs.length ? qs.split("&") : ; var item = null; var name = null; var value = null; //逐個將每一項添加到args對象中 for(var i=0;i//假設查詢的字串是?q=javascript&num=10
var args = getQueryStringArgs;
alert(args["q"]);//javascript
alert(args["num"]);//10

這個函數的第一步是先去掉查詢字串開頭的問號,

前提是location.search中必須要包含一個或多個字元。 然後將所有參數保存在args物件中, 該物件以字面量形式創建。 接下來根據和號(&)來分割查詢字串, 並返回name=value格式的字串陣列。 然後for迴圈會反覆運算這個陣列, 再根據等於號分割每一項, 從而返回第一項為參數名, 第二項為參數值的陣列。 再使用decodeComponent分別解碼name和value(因為查詢字串應該是被編碼過的), 最後將name作為args物件的屬性, 將value作為相應屬性的值。 最後調用函數, 每個查詢字串參數都成了返回物件的屬性, 方便了對每個參數的訪問。

同類文章
Next Article
喜欢就按个赞吧!!!
点击关闭提示