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>

运行截图:

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值