为什么它会在警告中显示"AAA"
而不是"BBB"
?
var z = "AAA";
function xx() {
var z = "BBB";
yy();
}
function yy() {
alert(z);
}
xx();
答案 0 :(得分:0)
var z = "BBB"
是声明的函数的本地,又名xx
- 它显示AAA
,因为yy
可以访问该变量。
答案 1 :(得分:0)
这是因为你在函数
中重新声明了变量zfunction xx() {
var z = "BBB";
yy();
}
z的范围现在位于xx()
中如果你想更新全局var z,那么你应该做为
function xx() {
z = "BBB";
yy();
}
答案 2 :(得分:0)
以下是如何使其工作的示例,您希望如何......但应避免这种情况......不应访问或设置全局变量。这被认为是非常糟糕的做法。
window.z = "AAA";
function xx() {
window.z = "BBB";
yy();
}
function yy() {
alert(window.z);
}
xx();
在PHP中你可以做同样的事情......
<?php
$z = "AAA";
function xx() {
global $z;
$z = "BBB";
yy();
}
function yy() {
global $z;
echo $z;
}
xx();
答案 3 :(得分:0)
这是它的工作原理:
var z = "AAA"; // 1. assign z with "AAA" as global, save it in memory address #1
function xx() {
var z = "BBB"; // 3. assign z with "BBB" as local, save it in memory address #2
yy(); // 4. call function yy()
}
function yy() {
alert(z); // 5. alert z from memory address #1, because i don't know the other z
}
xx(); // 2. call function xx()