博客
关于我
变量的声明提前和函数的声明提前 全局作用域和函数作用域的定义和释义
阅读量:651 次
发布时间:2019-03-15

本文共 759 字,大约阅读时间需要 2 分钟。

window全局对象

全局作用域

全局作用域是直接编写在<script>标签中的JavaScript代码的运行环境。全局作用域中的变量都是全局变量,可以在页面的任意部分访问。页面启动时,全局作用域创建,页面关闭时,全局作用域销毁。

window对象

window是全局作用域中的一个对象,代表浏览器窗口,是浏览器创建的。我们可以直接使用window对象。全局作用域中创建的变量会成为window对象的属性。

变量的声明提前

变量的声明会提前,无论变量声明的位置在哪里,声明都会在所有代码执行前完成。

  • 例如var a = 123;无论a的声明位置在哪里,都会在所有代码执行前被声明。
  • 如果不使用var声明变量,如a = 123;,则变量会被声明,但不会提前声明。

函数的声明提前

函数有两种定义方式:

  • 函数表达式function hanshu1() {})会在所有代码执行前被定义,可以提前调用。
  • **当使用var定义函数(如var hanshu2 = function() {})时,函数不会提前声明。
  • 函数定义域

    每次调用函数时,函数作用域都会创建并销毁。在函数作用域中,变量的查找会依次从自身作用域向上查找,最终寻找到全局变量。

    注意

    • 函数可以嵌套,内部函数可以访问外部函数的变量。
    • 在函数作用域中未定义的变量会变成全局变量。

    实用小贴士

    • 使用window对象访问全局变量:window.a
    • 函数定义域中的变量查找遵循“ closure principle”(闭包原理),函数内的变量会在函数外保留,但不能直接修改外部变量,除非明确声明。
    • 使用evalnew Function时,要特别注意变量的声明和作用域。

    通过以上理解,可以更好地掌握JavaScript中变量和函数的作用域原理,避免变量污染问题。

    转载地址:http://fabmz.baihongyu.com/

    你可能感兴趣的文章
    Plotly (Python) 子图:填充构面和共享图例
    查看>>
    Plotly 中的行悬停文本
    查看>>
    Plotly 停用 x 轴排序
    查看>>
    Plotly 域变量解释(多图)
    查看>>
    Plotly 绘制表面 3D 未显示
    查看>>
    Plotly-Dash 存在未知问题并创建“加载依赖项时出错“;通过使用 Python-pandas.date_range
    查看>>
    Plotly-Dash:如何过滤具有多个数据框列的仪表板?
    查看>>
    Plotly:如何为 x 轴上的时间序列设置主要刻度线/网格线的值?
    查看>>
    Plotly:如何从 x 轴删除空日期?
    查看>>
    Plotly:如何从单条迹线制作堆积条形图?
    查看>>
    Plotly:如何以 Root 样式绘制直方图,仅显示直方图的轮廓?
    查看>>
    Plotly:如何使用 Plotly Express 组合散点图和线图?
    查看>>
    Plotly:如何使用 plotly.graph_objects 和 plotly.express 定义图形中的颜色?
    查看>>
    Plotly:如何使用 Python 对绘图对象条形图进行颜色编码?
    查看>>
    Plotly:如何使用 updatemenus 更新一个特定的跟踪?
    查看>>
    Plotly:如何使用长格式或宽格式的 pandas 数据框制作线图?
    查看>>
    Plotly:如何向烛台图添加交易量
    查看>>
    Plotly:如何在 plotly express 中找到趋势线的系数?
    查看>>
    Plotly:如何在桑基图中设置节点位置?
    查看>>
    Plotly:如何处理重叠的颜色条和图例?
    查看>>