2010-08-13 4 views
3

Javascript compile ce code sans erreur:Quel est le but de ces fonctions internes?

function test() { 
    property: true; 
    alert('testing'); 
} 
test(); // Shows message 'testing' 
alert(test.property); // Shows 'undefined' 

est le contenu de la propriété accessible de quelque manière?

Si non, quel est le but de l'acceptation de ce code?

Répondre

3

property n'est pas une propriété ici. C'est une étiquette - quelque chose que vous pouvez utiliser avec break ou continue. Vous pouvez reformater le code que vous avez comme ceci:

function test() { 
    property: 
     true; 
     alert('testing'); 
} 

Vous n'êtes pas référence fait l'étiquette, et ce qui vient après (vrai) est juste une déclaration de non-op, rien ne se passe quand il exécute . La fonction ne contient de manière significative qu'une instruction d'alerte.


Vous semblez confondre un littéral d'objet avec une définition de fonction. Vous pouvez créer un objet avec des propriétés comme ceci:

var test = { 
    property: true; 
}; 

Vous pourriez aussi être source de confusion avec un couple d'autres motifs. Dites-nous ce que vous essayez d'accomplir pour plus d'informations.

+0

Je suppose que Carlos est à la recherche quelqu'un Code d'autre .. – mykhal

+0

droit, je l'ai utilisé comme étiquette . Je n'essayais pas d'accomplir quelque chose de précis ici, je viens de remarquer que c'est une syntaxe valide et je pensais qu'il pourrait y avoir une nouvelle astuce ici. Merci. –

+0

@mykhal pourquoi penseriez-vous cela? –

0
test = function() { 
    this.property = true; 
    alert('testing'); 
} 
var test = new test(); // Shows message 'testing' 
alert(test.property); // Shows 'true' 

'ceci' fait référence dans ce cas à la fonction à l'intérieur.

this.property = true; 

Vous devez assigner une fonction instancié à une variable afin de l'utiliser:

var test = new test(); 
Questions connexes