导读
一、 释疑局部、全局变量
全局变量:常常定义在函数外部,拥有全局作用域,即在 JavaScript 代码的任何地方都可以访问。
局部变量:定义在函数内部,只能在函数中使用的变量,作用范围是从函数头到尾,即在{}里。
注意:在函数内声明的变量只在函数体内有定义,即为局部变量,其作用域是局部性的。需要注意的是,在函数体内声明局部变量时,如果不使用 var 关键字,则将声明全局变量。
<!-- 局部变量及全局变量 -->
<script>
var num = 33;//这是一个全局变量
function sum(){
var num1 = 6;//局部变量
num2 = 7;//未使用var关键字,该变量为全局变量
return num1 +num2;
}
</script>
二、声明变量的几种方式
1、局部变量的声明
简要概括:中括号内{ },局部变量用Var
<script>
// 局部变量的声明
function add(){
var men = 6;//这是局部变量哦
}
</script>
2、全局变量的三中声明方式
①显示声明(使用var + 变量名)
②隐式声明(变量名=变量值)
③使用window全局声明
①代码
<script>
var num = 66;//使用var
</script>
②代码
<script>
var num =11;//显示声明
function db(){
var a = 1;//局部变量
b = 66;//全局变量并且是隐式声明
}
</script>
①代码
<script>
//使用window来声明
window.c = 99;
</script>
三、局部变量与全局变量三大问题
①相同变量名问题
思考:当用户在函数外声明了一个名为num的全局变量时,同时在名为aa的函数内部声明了一个num的局部变量时,各自的作用域是什么样的呢?
//同名问题
var num =7;//全局变量
function aa(){
var num = 9;//局部变量
console.log(num)//结果为:9
}
aa();//调用函数才能控制台输出结果
console.log(num);//结果为:7
讲解: 名为num的变量,在函数内部使用num变量时,范围大于去全局变量的范围;在函数外,则是全局变量范围大
②:变量零散问题
思考:
<script>
var a = 9;//全局变量
function aa(){
console.log(a);//思考点:结果为undefined 为啥?
var a = 8;//局部变量
console.log(a);//结果为8 局部变量
}
console.log(a);//结果为9 全局变量
</script>
解读:
第一个console.log(a)输出语句值为undefined,是因为变量在使用之前系统默认在函数体内声明了变量a,但是没有给定值,所以结果为undefined。
<script>
var a = 9;//全局变量
function aa(){
var a;//注意看这里,系统默认声明
console.log(a);//思考点:结果为undefined 为啥?
var a = 8;//局部变量
console.log(a);//结果为8 局部变量
}
console.log(a);//结果为9 全局变量
</script>
③变量释放问题
<script>
var a = "hello"; //全局变量
window.b = "word"; //全局变量
delete a;
delete b;
console.log(typeof a); //结果:string
console.log(typeof b); //结果:undefined
! function b() {
var c = 1; //局部变量
d = 2; //全局变量
delete c;
delete d;
console.log(typeof c); //结果:number
console.log(typeof d); //结果:undefined
}()
</script>
解读:
①:使用 var 创建的变量不能使用 delete 释放内存。
②:var 创建的变量可以使用 delete 释放内存。
特别声明:本文附加自己理解和原作者的思想,如有侵权,联系可删。
原文链接:https://blog.csdn.net/qq_23853743/article/details/106946100