变量作用域

本文详细探讨了JavaScript中的变量作用域,包括全局作用域和局部作用域,并阐述了变量的访问和赋值规则。通过示例代码解释了作用域链的工作原理,展示了如何在不同作用域中查找和赋值变量。此外,还强调了未定义变量的错误处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<!-- 
        变量作用域
=> 变量生效的范围
=> 全局作用域
   函数最外层定义的变量
=> 局部作用域
=> 函数体中定义的变量     
              
       变量使用规则 
=> 访问规则
在自己的作用域范围查找,如果自己的作用域没有,在上一级作用域查找,如果上级作用域没有,到全局作用域查找; 
全局作用域没有查找到,直接报错
               
=> 赋值规则 

作用域链
	变量访问或赋值时,
    先在自己的作用域查找,
如果没找到,再一层一层向上查找,至到最外层全局作用域。
这种层层查找关系,叫作用域链



var num = 100 // 全局作用域

 function fn() {
var num1 = 200 // 局部作用域 fn

  function fun() {
  var num2 = 300 //局部作用域fun函数中

  console.log('num2 :', num2) // 在自己的作用域范围查找
     console.log('num1 :', num1) // 如果自己的作用域没有,在上一级作用域查找
   console.log('num :', num) // 如果上级作用域没有,到全局作用域查找

  console.log('num3 :', num3)  // 全局作用域没有查找到,直接报错 Uncaught ReferenceError: num3 is not defined
            }

            fun()
        }

        fn()
     -->
var num = 100 // 全局作用域

function fn() {
var num1 = 200 // 局部作用域 fn

       function fun() {
var num2 = 300 //在自己作用域查找变量,找进行赋值
num1 = 400  // 如果自己的作用域没有,上一级作用域查找,找到赋值
num = 500  // 全局作用域查找,找赋值
num4 = 600  // 全局作用域也没找到, 在全局作用域自动创建变量,再赋值

console.log('num2 :',num2);
console.log('num1 :',num1);
console.log('num :',num);
console.log('num4 :',num4);
            }

            fun()
        }

        fn()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值