在下面的代码中,x不应该被视为全局变量吗?因此,当它到达console.log行x时,它应该具有“World”的值。但是,当我运行此代码时,它会记录“Hello undefined”。 `
let x = "World";
function sayHello(x) {
console.log("Hello ", x);
}
sayHello();
但是当我将参数更改为y时,它会按照我的预期工作,记录“Hello World。
let x = "World";
function sayHello(y) {
console.log("Hello ", x);
}
sayHello();
有人能解释一下这里发生了什么吗?
感谢
答案 0 :(得分:1)
x
中的sayHello(x)
参数会影响全局let x = "World";
。如果您传入值sayHello("Hello")
,则会得到一个输出Hello
。
答案 1 :(得分:1)
尝试拨打sayHello(‘Stack Overflow’)
。我相信你能猜出结果会是什么。
该函数期望x
成为传递给函数的第一个参数。如果没有传递参数,则参数x
为undefined
。
此处发生的技术术语是 shadowing 。即使没有为参数传递值,名为x
的参数也会隐藏名为x
的变量。