以下JS代码的行为异常:
var c = 0;
var a = 0;
myTest(8, 5);
function myTest(a,b) {
console.log(a);
a++;
c++;
console.log(a);
return a;
}
console.log(a);
console.log(c);
https://jsfiddle.net/hwns1v4L/
如果我从函数中删除“ a”参数,则“ a”将增加1,并且第三个控制台日志将“ a”返回为1。完全正常。但是,如果我将“ a”保留为myTest函数的参数(如上面的代码中所示),则它将获得8的值,以1到9的增量递增,并且第三个控制台日志将返回零。
这种奇怪行为的解释是什么?如果在另一个线程中对此进行了解释,我感到抱歉。我对于JS来说太新了,无法产生非常好的Google查询或理解高级答案。
这种奇怪行为的解释是什么?
因为在Javascript中变量是函数范围的。
你从来没有通过a
,并b
于myTest
法。您通过了8和5,因此签名的一部分a
又有了新的范围。变成8并且变成5内部。b
myTest
a
b
myTest
a
和b
内部的值myTest
将不会在外部使用,因为它们的范围仅限于myTest。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句