2016-08-04 3 views
0

Я не понимаю увеличение цепочки цепочки javascript. я нашел пример,Что такое увеличение цепочки в javascript?

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

кто может предоставить любой простой пример, который будет более полезным для меня :) Спасибо :) :)

+0

Переменная, объявленная с помощью 'var' внутри' with'-block, добавляется к ее окружению ('buildUrl'). 'with' действует подобно глобальному объекту' window', за исключением этого. Btw, 'with' устарел в Javascript. Посмотрите на это [сообщение в блоге] (http://www.2ality.com/2011/06/with-statement.html) – ftor

ответ

1

Начнем с того, в JavaScript var распространяется до функция, которая появляется в, не блок, что в Таким образом, если есть блок в функции (например, если заявление) любой var, определенном внутри, если заявление будет область видимости функции:.

function foo() { 
 
    if (1 === 1) { 
 
    var output = "Something"; 
 
    } 
 
    console.log(output); 
 
} 
 

 
foo();

Когда вы находитесь внутри with блока, вы определяете «контекст» для работы. Таким образом, в вашем случае вы работаете с местоположением. При ссылке на переменную, она будет сначала искать переменную в контексте location, если он не может найти его, он будет смотреть на область видимости функции:

function foo() { 
 
    var notInLocation = "something "; // Not as attribute of location 
 
    var pathname = "something else"; // Is as attribute of location 
 
    // the pathname in the location here seems to be "/js" 
 
    
 
    with (location) { 
 
    console.log(notInLocation + href); // href is a attribute of location and notInLocation isn't 
 
    console.log(pathname + href); // hred and pathname are both attributes in location 
 
    } 
 
} 
 

 
foo()

Таким образом, в ваш блок with, он сначала попробует location.qs и не найдет атрибут с именем qs, поэтому он рассмотрит область функций и подберет переменную, которую вы определили ранее.

Смежные вопросы