JavaScript有两种变量:局部变量和全局变量。
首先,局部变量是指只能在本变量声明的函数内部调用。全局变量是整个代码中都可以调用的变量。当然,只是从字面的上的理解肯定理解不清楚。下面咱们用代码来真正的理解一下。
在JavaScript中变量是需要用var关键字声明的。但是JavaScript中也可以不用声明,直接使用。因为在JavaScript中的变量是
弱类型(java中的变量是强类型,所以变量需要进行声明)。但是在JavaScript中把声明的变量当做全局变量来使用的。
例子:
1.
<script language="javascript">
function my_name() {
i = '小猪佩奇';
}
my_name();
function my_Name() {
alert(i);
}
my_Name();
</script>
输出:小猪佩奇
这说明变量i就是全局变量,虽然在不同的函数中但是也可以进行调用弹出。那如果进行下面修改就不一样了》
2.
<script language="javascript">
function my_name() {
var i = '小猪佩奇';
}
my_name();
function my_Name() {
alert(i);
}
my_Name();
</script>
在这个程序中就不会有输出,因为在这个时候 i 就是人家my_name函数中的变量,也就是局部变量。而你在函数my_Name中调用,这就不可以的。
3.我们进行下面的修改:
<script language="javascript">
function my_name() {
i = '小猪佩奇';
}
function my_Name() {
alert(i);
}
my_Name();
</script>
咱们把my_name();去掉,此时浏览器也不会有反应,因为虽然 i 是全局变量但是函数my_name()没有进行调用,所以就是相当是声明了 i 但是没有进行赋值,所以也就没有任何输出。
4. 那咱们在进行如下的修改:
<script language="javascript">
var i="佩奇弟弟乔治"
function my_name() {
i = '小猪佩奇';
}
my_name();
function my_Name() {
alert(i);
}
my_Name();
</script>
这次的输出是:小猪佩奇 原因就是全局变量 i 的起始值是“佩奇弟弟乔治”但是经过函数my_name的再次赋值,就变成了小猪佩奇,所以在弹出的时候就是小猪佩奇了。
5.在变一下:
<script language="javascript">
var i="佩奇弟弟乔治"
function my_name() {
var i = '小猪佩奇';
}
my_name();
function my_Name() {
alert(i);
}
my_Name();
my_name();
</script>
那,这次的结果就不是“小猪佩奇”了 就变成 “佩奇的弟弟乔治”。为什么呢,就是因为其实这两个 i 就是不一样的,第一个 i 是全局变量 但是第二个 i 就是局部变量了,它只在函数my_name中可以调用,在函数my_Name中的调用时对全局变量 i 的调用。
6. 那在变成这样,
<script language="javascript">
var i="佩奇弟弟乔治"
function my_name() {
i = '小猪佩奇';
}
function my_Name() {
alert(i);
}
my_Name();
my_name();
</script>
这次就是 佩奇的弟弟乔治 因为这次首先是 对函数my_Name进行调用,在对函数my_name进行调用,所以弹出的 i 就是:佩奇弟弟乔治
大概变量就只有这么多的内容,虽然很简单 ,但是有一丢丢的绕,好好看一下 ,肯定能很好地认知到。