1. 程式人生 > >js 延長作用域鏈

js 延長作用域鏈

debug urn true () AR title 包含 cati 因此

function buildUrl() { var qs = "?debug=true"; with (location) { var url = href + qs; }
return url; } console.log(buildUrl())

在此,with 語句接收的是 location 對象,因此其變量對象中就包含了 location 對象的所有屬 性和方法,而這個變量對象被添加到了作用域鏈的前端。buildUrl()函數中定義了一個變量 qs。當在 with 語句中引用變量 href 時(實際引用的是 location.href),可以在當前執行環境的變量對象中 找到。當引用變量 qs 時,引用的則是在 buildUrl()中定義的那個變量,而該變量位於函數環境的變 量對象中。至於 with 語句內部,則定義了一個名為 url 的變量,因而 url 就成了函數執行環境的一 部分,所以可以作為函數的值被返回。

因為with的方法,所以url也變成了函數buildUrl環境變量

js 延長作用域鏈