在以下代码中:
//global scope
function isValid() {
return "hello from isValid";
}
function test() {
//local scope
var isValid = 9;
//.....
isValid();
}
test();
我收到错误:
"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"
当我理解 isValid 函数与 isValid 变量在不同的范围内时,为什么会这样?该变量似乎覆盖了函数定义。即使它们具有不同的作用域,它们也共享相同的命名空间是问题吗?
JavaScript 中没有命名空间——函数和变量以及所有东西都存在于一个中。是的,外部变量被内部声明遮蔽 - 当您isValid
在函数中引用时,它是局部变量。其中具有 value 9
,而不是函数值,因此在调用时会引发异常。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句