在 JavaScript 中
- 对象和函数同样也是变量。
- 作用域为可访问变量,对象,函数的集合。
- 作用域在函数内修改。
分为:
- 全局作用域
变量在函数外定义,即为全局变量。
全局变量有 全局作用域: 网页中所有脚本和函数均可使用。 - 局部作用域(函数作用域)
含义:变量的
作用:起作用的
域:区域 范围
var name = "xm";//全局变量
function fn(argument){
var sex = "male";
console.log(name);//xm 全局的变量可以访问
}
fn();
var name = "xm";
function fn(argument){
var sex = "male";
}
console.log(sex);//局部作用域 访问不到
fn();
JavaScript解析机制
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>js的解析机制</title>
<script type="text/javascript">
var name = "xm";
var age = 18;
function fn(){
var name = "xh";
var age = 10;
console.log(name);//xh
}
fn();
var name = "xm";
var age = 18;
function fn(){
console.log(name);//undefined js的预解析机制
var name = "xh";
var age = 10;
}
fn();
console.log(a);//undefined
var a = 1; //变量提升
console.log(a);//1
</script>
</head>
<body>
</body>
</html>
常见的四种作用域范围类型
一、
var a = 1;
function fn (){
console.log(a);//undefined
var a = 2;
}
fn();
console.log(a);//1
二、
var a = 1;
function fn(){
console.log(a);//1 这里的fn作用域中没有找到var定义 所以只能往外找,输出第一个a=1
a = 2;//由于它没有var定义,所以这里的a是全局变量 覆盖
}
fn();
console.log(a);//2
三、
var a = 1;
function fn(a){//fn作用域中的局部变量 var a;
console.log(a);// undefined 预解析机制
a = 2;//这里的a 修改的是局部变量
console.log(a);//2
}
fn();
console.log(a);//1
四、
var a = 1;
function fn(a){
console.log(a);//1
a = 2;//这里的a 修改的是局部变量
}
fn(a);//读取的是全局a 所以第一个a输出1
console.log(a);//1
内存和垃圾处理机制
概念:当变量不用的时候,可以手动解除它的引用,设置为null,就相当于清楚内存
var num = 1;
//清除缓存
function fn(){
num = null;
}
总结
- 变量保存数据容器。
- 变量命名规则和建议。
- 基本数据类型和引用数据类型区别:
- 作用域:全局和函数作用域。
- 内存清除:设置null。
如图: