<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script type="text/javascript">
/*
*作用域:代码(变量或函数)生效的范围
*
* 全局变量:在函数外部定义的变量(在函数的内部或外部都可以使用)
* 局部变量:在函数内部定义的变量(只能在函数内部使用)
*
* 全局函数 同上
* 局部函数 同上
*
* *******js的作用域是函数级的作用域
*/
var a=2;//全局变量
function test(){
var b=3;//局部变量
a++;
}
test();
//局部变量只能在函数内部使用 函数外部访问不到 不能使用
console.log(a);
// console.log(b);
//变量的声明或函数的定义会提前到当前的作用域的最前面
function test1(){
console.log(x)
var x=1;
console.log(x)
}
test1();
/**/
function test2(){
//在函数定义变量时 不加var, 此变量就是全局变量
c=8;
}
test2()
console.log(c);
/*就近原则:
* 当局部变量和全局变量同名时,当访问变量时,会在当前作用域中先查找是否
* 定义过该变量.若有则直接使用;如果没有会向上一级作用域范围查找,知道找到为止都没有
* 会报错....is not defined
*/
function test3(){
var a=5;
// alert(a)
}
test3()
// alert(a)
/*JS没有块级作用域:是函数级作用域*/
if(true){
var d=7;
}
console.log(d)
function func(){
var e=5;
}
//console.log(e);
/*函数内部的变量是局部变量,只能在该函数内部使用,外部获取不到;
* 若该变量定义在外部成为全局变量则在任何地方可以访问并且可以修改,不安全
* 若要在外部获取函数内的局部变量 就可以换一种方式;
* 闭包:(实际上就是一个匿名函数) 在函数内部定义的函数
* 通过闭包可以在函数外部访问函数内部 的局部变量;
* 通过闭包操作的变量 空间会一直存在;使用过多就会存在内存问题
*/
function test5(){
var m=2;
return function(x){
m=x;
console.log(x)
};
};
var fh=test5(5);
fh();
/*
* 当函数内部定义的局部变量,当函数调用执行结束时,系统会以垃圾回收机制的形式将该变量的空间回收
* 全局变量,只要代码处于执行过程 空间就一直存在
*/
</script>
<!--代码是按标签的先后顺序从上到下进行解析的,所以下面的script标签可以访问上面script标签
中的全局变量或函数,而上面的script标签内无法访问下面标签中定义的变量或函数
-->
</body>
</html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script type="text/javascript">
/*
*作用域:代码(变量或函数)生效的范围
*
* 全局变量:在函数外部定义的变量(在函数的内部或外部都可以使用)
* 局部变量:在函数内部定义的变量(只能在函数内部使用)
*
* 全局函数 同上
* 局部函数 同上
*
* *******js的作用域是函数级的作用域
*/
var a=2;//全局变量
function test(){
var b=3;//局部变量
a++;
}
test();
//局部变量只能在函数内部使用 函数外部访问不到 不能使用
console.log(a);
// console.log(b);
//变量的声明或函数的定义会提前到当前的作用域的最前面
function test1(){
console.log(x)
var x=1;
console.log(x)
}
test1();
/**/
function test2(){
//在函数定义变量时 不加var, 此变量就是全局变量
c=8;
}
test2()
console.log(c);
/*就近原则:
* 当局部变量和全局变量同名时,当访问变量时,会在当前作用域中先查找是否
* 定义过该变量.若有则直接使用;如果没有会向上一级作用域范围查找,知道找到为止都没有
* 会报错....is not defined
*/
function test3(){
var a=5;
// alert(a)
}
test3()
// alert(a)
/*JS没有块级作用域:是函数级作用域*/
if(true){
var d=7;
}
console.log(d)
function func(){
var e=5;
}
//console.log(e);
/*函数内部的变量是局部变量,只能在该函数内部使用,外部获取不到;
* 若该变量定义在外部成为全局变量则在任何地方可以访问并且可以修改,不安全
* 若要在外部获取函数内的局部变量 就可以换一种方式;
* 闭包:(实际上就是一个匿名函数) 在函数内部定义的函数
* 通过闭包可以在函数外部访问函数内部 的局部变量;
* 通过闭包操作的变量 空间会一直存在;使用过多就会存在内存问题
*/
function test5(){
var m=2;
return function(x){
m=x;
console.log(x)
};
};
var fh=test5(5);
fh();
/*
* 当函数内部定义的局部变量,当函数调用执行结束时,系统会以垃圾回收机制的形式将该变量的空间回收
* 全局变量,只要代码处于执行过程 空间就一直存在
*/
</script>
<!--代码是按标签的先后顺序从上到下进行解析的,所以下面的script标签可以访问上面script标签
中的全局变量或函数,而上面的script标签内无法访问下面标签中定义的变量或函数
-->
</body>
</html>