ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

全局作用域与函数作用域

2022-01-12 16:32:09  阅读:73  来源: 互联网

标签:函数 作用域 var 全局 声明 变量


作用域

  • 作用域指一个变量的作用的范围
  • 在JS中一共有两种作用域

全局作用域

  • 直接编写在script标签中的JS代码,都在全局作用域

  • 全局作用域在页面打开时创建,在页面关闭时销毁

  • 在全局作用域中有一个全局对象window(它代表的是一个浏览器的窗口),我们可以直接使用

  • 在全局作用域中:

    • 创建的变量都会作为window对象的属性保存
    • 创建的函数都会作为window对象的方法保存
  • 全局作用域中的变量都是全局变量

    • 在页面的任意的部分都可以访问的到

变量的声明提前

  • 使用var关键字声明的变量,会在所有的代码执行之前被声明(但是不会赋值),
    但是如果声明变量时不适用var关键字,则变量不会被声明提前

函数的声明提前

  • 使用函数声明形式创建的函数function函数( ){ }
    它会在所有的代码执行之前就被创建

函数作用域

函数作用域

  • 调用函数时创建函数作用域,函数执行完毕以后,函数作用域销毁
  • 每调用一次函数就会 创建一个 新的函数作用域,他们之间是互相独立的
  • 在函数作用域中可以访问到全局作用域的变量
    • 在全局作用域中无法访问到函数作用域的变量
  • 当在函数作用域操作一个变量时,它会先在自身作用域中寻找,如果有就直接使用
    • 如果没有则向上一级作用域中寻找,直到找到全局作用域,如果全局作用域中依然没有找到,则会报错ReferenceError

在函数作用域也有声明提前的特性,
使用var关键字声明的变量,会在函数中所有的代码执行之前被声明

在函数中,不适用var声明的变量都会成为全局变量

var c = 1;
function fun1(){
    console.log("c = "+c);
    var c = 2;
}
fun1();
//输出为c = undefined
var c = 1;
function fun1(){
    console.log("c = "+c);
    c = 2;
}
fun1();
//输出为c = 1
var c = 1;
function fun1(){
    c = 2;
}
fun1();
console.log("c = "+c);
//输出为c = 2
//定义形参就相当于在函数作用域中声明了变量
var a = 10;
function fun2(a){
    console.log(a);
}
fun2();
//输出为undefined

标签:函数,作用域,var,全局,声明,变量
来源: https://www.cnblogs.com/wzx-blog/p/15793169.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有