Java教程

JS学习总结-----javascript作用域

本文主要是介绍JS学习总结-----javascript作用域,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

作用域的简述:在一段程序代码中用的名字(变量)并不是总是有效的和可用的,而通过限定这个名字的作用范围就是作用域。在JS中作用域又分为:全局作用域 ,局部作用域。

<script>
//整个<script>标签就是全局作用域
 var num = 1;//这个num是全局有效的
 console.log(num);
 function fn() {
 var num = 10;//(在函数里面的就是局部作用域)这个num是局部作用域,虽然变量名一样了,在不同作用域下是不会影响的,
 console.log(num); 
} 
 fn(); 
</script>

运行截图:

当然根据作用域的不同,变量也不同,就有了全局变量和局部变量。 如上图代码,在全局作用域下声明的变量为全局变量,在函数内部声明的变量为局部变量。另外函数的形参也是一个局部变量。注意:还有一种特殊情况,如果在函数内部是没有声明,直接进行赋值的变量也是全局变量。从执行效率来看,局部变量 > 全局变量。因为局部变量只有当浏览器关闭是才会销毁,比较占内存资源,而局部变量是当这个函数执行完毕时便会自动销毁。

作用域链简述:通俗的解释就是一个函数要调用这个值,而自己没有,则会向上一级去获取,上一级没有则继续往上,如果都没有的话,则会出现is not defined。

作用域链案例1:num输出的值是多少?

<script>
function fn1() {
var num = 12;
function fn2() {
console.log(num);
}
fn2();
}
var num = 34;
fn1();
</script>

运行截图:

 

 作用域链案例2:num1,num2输出的值是多少?

<script>
function fn1() {
var num2 = 4;
function fn2() {
var num1 = 5;
var num2 = 123;
function fn3() {
var num1 = 12;
console.log (num1,num2);
}
fn3();
}
fn2();
}
fn1();
</script>

运行截图:

 

 

 

 

这篇关于JS学习总结-----javascript作用域的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!