Javascript 为什么可以';我有时会修改js中的函数变量吗?
我遇到了一个奇怪的问题,JS中的函数变量在某些情况下是不可写的Javascript 为什么可以';我有时会修改js中的函数变量吗?,javascript,Javascript,我遇到了一个奇怪的问题,JS中的函数变量在某些情况下是不可写的 function a(){ a=1 console.log(a) } a() // output 1 (function a(){ a=1 console.log(a) })() // output a function 'a' var b=function a(){ a=1 console.log(a) } b() // output is also a function 'a' 从这个来源
function a(){
a=1
console.log(a)
}
a() // output 1
(function a(){
a=1
console.log(a)
})() // output a function 'a'
var b=function a(){
a=1
console.log(a)
}
b() // output is also a function 'a'
从这个来源:
您正在试验的情况与函数的标识符/名称的不可变性/易变性相关,当它是函数表达式(标识符inmutable)和函数声明(标识符易变)时
在第一个示例中,有一个标识符为a
(mutable)的函数声明,因此您在方法内部覆盖它,并且输出是该覆盖的结果:
函数a()
{
console.log(“无覆盖:”,a);
a=1;//标识符'a'是可变的!
console.log(“覆盖后:”,a);
}
a()代码>
.as控制台{背景色:黑色!重要;颜色:石灰;}
.作为控制台包装器{max height:100%!important;top:0;}
是的,当你尝试并误用一种编程语言时,事情会变得很奇怪:p我没有答案,但有一个问题-你为什么会想做这样的事情?@Jaromanda X嗯,我认为一切都应该是可以解释的,一个bug或设计。我只是想弄明白它的意思。如果我还没有投票决定答案的正确性,我会投票决定重新调整控制台。