全局作用域

作用域是指代码运行时的生效范围,包括全局作用域、局部作用域和块级作用域。全局作用域中的变量存储在window对象中,可能导致全局污染,即变量冲突和系统属性覆盖。函数作用域可以避免全局污染,变量只在函数内部可用。匿名函数自调用是创建函数作用域的一种方式。在浏览器环境中,window对象提供了操作浏览器的功能。
摘要由CSDN通过智能技术生成

什么是作用域?

答: 代码运行时的生效范围. 有作用的领域

有哪些作用域?

  1. 全局作用域: 这里的代码在哪里都能用, 公共的

  1. 局部作用域: 函数运行时产生的, 函数私有的

  1. 块级作用域: ES6提供的

直接在脚本中书写的代码, 都属于全局作用域

全局中 声明的变量 存储在 顶级对象 -- window

window是浏览器提供的, 存储了 浏览器提供的所有 API

JS在浏览器中运行, 就可以操作 window 对象中提供的功能

宿主环境: JS代码运行时所在的平台

1. node.js -- 2阶段

2. 浏览器 -- 3阶段 - 研究运行在浏览器上的JS 有什么特点.

全局(对象)污染:

全局对象指的是 window 对象, 本质功能是存储系统级的内容

我们声明的变量默认也会存储在 window 对象里, 这并非window的主要职责, 所以说: 自定义变量 污染了 全局对象

造成的问题:

1. 属性名和系统属性重复, 会导致覆盖

2. 多个外部脚本中的变量 都存放在全局, 会导致冲突覆盖!

解决方法:

利用函数作用域来解决全局污染!

window对象

  • window 对象哪里来的?

  • 浏览器提供的

  • window对象里的内容是做什么的

  • 提供操作浏览器的各种功能函数

  • 如何使用window对象中的内容

两种方式可以使用

  • window.属性名

  • 属性名 : 全局中没有书写前缀, 默认到window对象中查找使用

函数作用域

// 函数运行时产生的作用域, 其中的变量使用范围仅限函数内部!
    // 函数分两种状态:
    // 1. 静态 -- 声明时
    // 2. 动态 -- 触发函数/调用函数, 例如 函数名()
    function show() {
      // 这里的 x 属于 函数的私有财产, 外部无法使用
      var x = 10

      // 函数中声明的变量, 存储在函数的作用域对象中
      // 没有存储在全局window里, 不会造成污染!
    }

    show() //动态

    console.log('x:', x) // 10

      // 快速生成函数作用域的语法:  匿名函数自调用
      // var z = function () { }
      // z()

      ; (function () {
        var a = 10 // 属于函数作用域, 不会造成污染!
        var b = 20
      })()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值