2017-08-29 1 views
1

J'ai une question sur IntelliSense dans Visual Studio.IntelliSense dans Visual Studio 2015 javascript

Par exemple, j'ai ceci:

var pickRandomWord = function (words) { 
    return words[Math.floor(Math.random() * words.length)]; 
}; 

console.log(pickRandomWord(randomWords)); 

Puis, quand la fonction de retour, je ne vois pas la propriétée de longueur des mots. Si je tape dans visual studio 2015 words.There apparaît un message:

IntelliSense n'a pas pu déterminer une liste d'achèvement précis pour cette expression javascript

Mais si je fais ceci:

var pickRandomWord = function (words) { 
    return words[Math.floor(Math.random() * words.length)]; 
}; 

var randomWords = ["Planet", "Worm", "Flower", "Computer"]; 

console.log(pickRandomWord(randomWords)); 

Alors l'intellisense fonctionne bien. Je vois alors la propriété de longueur. Pourquoi est-ce?

Merci

Répondre

1

Parce que la fonction pickRandomWord ne sait pas de quel type il recevra ce n'est pas en mesure de prédire la propriété « longueur ». Comme pour votre deuxième exemple, lorsque vous préparez le tableau randomWords et appelez votre fonction avec, VS sera assez intelligent pour voir "Ok, je vais recevoir un tableau basé sur l'implémentation ci-dessous.". Important: Intellisense ne sera pas toujours précis et affichera les bonnes propriétés. Vous pouvez essayer Typescript - Intellisense est extrêmement bon avec cela (en raison des types évidemment).

+0

Oke, merci !! Agréable – LikeToDo