总结javascript中的全局变量和局部变量的区别以及声明函数和调用函数的区别

时间:2022-02-19 00:30:16

<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="utf-8"/>
<title></title>
<script src="../js/jquery-1.10.2.js"></script>
<script>
// 1 i为全局变量 输出全局变量
function myName() {
i = '全局变量';
}
myName();
function sayName() {
alert(i);
}
sayName(); // 2 i为局部变量 运行出错 显示i未定义
function myName() {
var i='局部变量';
}
myName();
function sayName() {
alert(i);
}
sayName(); // 3 将1中的myName()去掉 运行出错 显示i未定义,虽然声明了函数,但是没有调用函数,函数中的i的赋值失效。
function myName() {
i = '全局变量';
}
function sayName() {
alert(i);
}
sayName(); // 4 将1中的myName()放到sayName()的下面 运行出错 显示i未定义,虽然声明了函数 调用了函数 但是因为javascript调用的函数自上而下运行,
// 当运行sayName时并没有运行myName().
function myName() {
i = '全局变量';
}
function sayName() {
alert(i);
}
sayName();
myName(); // 5 运行结果显示是全局变量。虽然变量名称相同,但是一个是全局变量,一个是局部变量,有着本质的区别,局部变量只能在本函数之内使用
var i = '全局变量';
function myName() {
var i = '局部变量';
}
myName();
function sayName() {
alert(i);
}
sayName(); // 6 将5的局部变量改成全局变量,运行结果显示改变的全局变量
var i = '全局变量';
function myName() {
i = '改变的全局变量';
}
myName();
function sayName() {
alert(i);
}
sayName(); // 7 运行结果显示undefined,因为代码的执行顺序是从上到下的,在输出i之前并只定义了i,没有对i初始化。
var i;
function sayName() {
alert(i);
i = '全局变量';
}
sayName(); // 8 运行结果显示全局变量,在输出之前初始化i就没有问题了
var i;
function sayName() {
i = '全局变量';
alert(i);
}
sayName();
// 9运行结果显示undefined,因为输出的是局部变量,而局部变量得初始化在输出之后。
var i = '全局变量';
function sayName() {
alert(i);
var i = '局部变量';
}
sayName();
</script>
</head>
<body> </body>
</html>