JavaScript第五天学习总结—— 作用域、变量的作用域、作用域链、预解析

JavaScript基础第05天笔记

作用域

通常来说,一段程序代码中所用到的名字并不总是有效和可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。

简单理解:作用域就是代码起作用的范围

作用域的使用提高了程序逻辑的局部性,增强了程序的可靠性,减少了名字冲突。

JavaScript(ECMAScript6前)中的作用域有两种:

  • 全局作用域
  • 局部作用域(函数作用域)

全局作用域

作用于所有代码执行的环境(整个 script 标签内部)或者一个独立的 js 文件。

<script>
    var num = 30;   //全局作用域
	console.log(num);
</script>

局部作用域

作用于函数内的代码环境,就是局部作用域

只在函数内部起效果和作用。

因为跟函数有关系,所以也称为函数作用域

<script>
    function fn() {
   
        //局部作用域
        var num = 20;  // 局部作用域
        console.log(num);
	}
    fn();
</script>

例子

<script>
//全局作用域: 整个script标签 或者是一个单独的js文件
var num = 10;
var num = 30;
console.log(num);

//局部作用域(函数作用域): 在函数内部就是局部作用域 这个代码的名字只在函数内部起效果和作用
function fn() {
   
    // 局部作用域
    var num = 20;
    console.log(num);
}
fn();
</script>

JS没有块级作用域

  • 块作用域由 { } 包括。

    在其他编程语言中(如 java、c#等),在 if 语句、循环语句中创建的变量,仅仅只能在本 if 语句、本循环语句中使用

  • java有块级作用域:

    if(true){
         
      int num = 123;
      system.out.print(num);  // 123
    }
    system.out.print(num);    // 报错
    

    以上java代码会报错,是因为代码中 { } 即一块作用域,其中声明的变量 num,在 “{ }” 之外不能使用。

    而与之类似的JavaScript代码,则不会报错

  • 在ES6之前,Js中没有块级作用域(在ES6之前,ES6就是ECMAScript6)

if(true){
   
  var num = 123;
  console.log
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值