Может кто-нибудь объяснить это поведение IntelliSense Javascript Visual Studio? - PullRequest
1 голос
/ 20 марта 2012

Во время написания функции наследования Javascript некоторое время назад я заметил очень странное поведение с intellisense в Visual Studio, которое, я не думаю, было задокументировано в другом месте. Я наблюдал это до сих пор в VS2008 и VS2010, но, насколько я знаю, он может появиться еще раньше.

По сути, VS выполняет функцию и делает результаты доступными в intellisense.

Например:

function test(obj, member, value) {
    obj[member] = value;
    return obj;
}

function harness() {
    var obj = {};
    test(obj, "firstname", "Jack");
    test(obj, "lastname", "Bauer");
    // If you now type in 'obj.' and wait for intellisense to pop-up you will notice that 'firstname' and 'lastname' will appear as members.
}

Насколько я могу судить, я не могу понять, как это возможно с помощью обычного средства проверки синтаксиса - VS не мог знать, что «firstname» или «lastname» были членом объекта, не выполнив «test ()» как они не являются членами, пока не будет вызвана функция.

Может кто-нибудь предложить объяснение?

1 Ответ

1 голос
/ 20 марта 2012

VS intellisense действительно выполняет код (в любом случае псевдо-выполнение).

Взгляните на это: http://weblogs.asp.net/scottgu/archive/2010/04/08/javascript-intellisense-improvements-with-vs-2010.aspx

...