<html>
<body>
</body>
<script type="text/javascript">
var calc = function() {
var result = 0;
return {
sum: function(x, y) {
result = x + y;
return result;
},
sub: function(x, y) {
result = x - y;
return result;
}
}
}
var literalCalc = {
result : 0,
sum: function(x, y) {
result = x + y;
return result;
},
sub: function(x, y) {
result = x - y;
return result;
}
}
var calc = calc();
console.log(calc.sum(5, 2)); // 7
console.log(calc.result); // undefined
console.log(literalCalc.sum(5, 2)); // 7
console.log(literalCalc.result); // 0
</script>
</html>
Tenho duas dúvidas:
- result na closure é considerado privado, já que retornou undefined?
- porque o ultimo console.log retorna 0? Não deveria retornar 7, já que foi feita uma operação sum?
Agora estou mais confuso ainda. Adicionei a palavra chave this e agora quase tudo é retornado com o valor 7:
Pergunta
Prove Yourself
Baseado no seguinte código:
Tenho duas dúvidas: - result na closure é considerado privado, já que retornou undefined? - porque o ultimo console.log retorna 0? Não deveria retornar 7, já que foi feita uma operação sum? Agora estou mais confuso ainda. Adicionei a palavra chave this e agora quase tudo é retornado com o valor 7:Parece que com o this, result é exibido fora da closure... Não parece mais privado como eu acho que é. Alguém pode explicar isso?
Valeu.
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.