Im folgenden Code clobbering:Variable und Funktion mit dem gleichen Namen
//global scope
function isValid() {
return "hello from isValid";
}
function test() {
//local scope
var isValid = 9;
//.....
isValid();
}
test();
ich den Fehler:
"TypeError: isValid is not a function
at test (devicok.js:10:5)
at devicok.js:12:1
at https://static.jsbin.com/js/prod/runner-4.1.1.min.js:1:13850
at https://static.jsbin.com/js/prod/runner-4.1.1.min.js:1:10792"
Warum ist dies, wenn, wie ich es die isValid Funktion verstehen ist in a different scope als die isValid Variable? Es scheint, dass die Variable die Funktionsdefinition überschreibt. Ist das Problem, dass sie denselben Namespace verwenden, obwohl sie unterschiedliche Bereiche haben?
Code and error presented in jsbin.
Wenn Sie einen Namen verweisen, erhalten Sie die Sache mit diesem Namen im engsten Umfang. Bei 'isValid();' enthält der nächstliegende Bereich etwas mit dem Namen 'isValid', also das, was Sie bekommen. Ja, sie teilen "denselben Namensraum" in dem Sinne, dass JavaScript keine Namensräume hat. – Ryan