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