3.6.8 with語句
with語句將代碼的作用域設(shè)置到一個(gè)特定的對(duì)象中,目的:為了簡(jiǎn)化多次編寫同一個(gè)對(duì)象的工作,用法如下:
with(expression) statement;
var hostName = localhost.hostName;
var id = localhost.user.id
//上面代碼和下面相同
with(localhost) {
var hostName = hostName;
var id = user.id
}
下方的代碼良风,用with關(guān)聯(lián)了localhost對(duì)象。在代碼塊內(nèi)的每個(gè)變量被認(rèn)為是一個(gè)局部變量,若在局部環(huán)境中找不到該變量,則會(huì)查詢關(guān)聯(lián)的localhost對(duì)象是否有同名屬性粟关。(相當(dāng)于把該代碼塊的上層作用域改為關(guān)聯(lián)的對(duì)象)
注意嚴(yán)格模式下不可以使用with,視為語法錯(cuò)誤环戈。
3.7.1 理解參數(shù)
可以向js函數(shù)傳遞任意數(shù)量的參數(shù)闷板,并可以通過arguments對(duì)象來訪問這些參數(shù)。
function getLength() {
alert(arguments.length);
alert(arguments[0]);//輸出參數(shù)列表的第一個(gè)
}
getLength(1院塞, 2)遮晚;//輸出2 1
getLength("hello world");//輸出1 hello world
3.7.2 不支持傳統(tǒng)意義上的重載
js函數(shù)沒有函數(shù)簽名(接受參數(shù)的類型和數(shù)量),因?yàn)槠鋮?shù)都是由包含0或多個(gè)值的數(shù)組來表示拦止,而沒有函數(shù)簽名县遣,故不存在真正的重載。(函數(shù)名字相同而函數(shù)簽名不同汹族,則為不同函數(shù))可以通過再函數(shù)內(nèi)判斷arguments的長(zhǎng)度或特定值來的不同來執(zhí)行不同的代碼來實(shí)現(xiàn)萧求。