浅谈 变量的作用域

今天跟大家分享我的心得和笔记哈!

作用域

全局作用域 (全局变量)/局部作用域(局部变量)

全局是定义在函数之外的变量。全局变量可以在函数内部直接使用。
局部是定义在函数内部的变量。局部变量默认只能在函数内部使用。
对于全局和局部的理解,可以通俗一点,但是当我们在面试时,还是不要用的好:我想你们应该都听说过这一句话,那就是你的就是我的,我的还是我的,这句话就是 局部 的真实写照,局部自己 声明的变量就只有它自己能用,就是一个自私鬼。哈哈哈😄!全局嘛,顾名思义,顾全大局,舍己为人,一切为大局着想,就这啦🤭(●’◡’●)。
下面我们看一下我们调用变量时的实例(var)
实例讲解:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

调用变量和对变量赋值的原则

变量的赋值原则:
1、先在当前作用域中找变量,如果有,就对这个变量进行赋值
2、如果当前作用域没有这个变量,去父级作用域找这个变量
3、 如果父级也没有这个变量,再去父级找变量
4、 如果所有的作用域都没有这个变量
5、赋值语句,升级为定义变量语句,并且定义的是全局作用域变量
6、不会去子级找变量赋值
最后一个,谨记:定义变量,一定要写 var 关键词,不管是局部还是全局
老样子,下面实例讲解哦!
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

预解析/预解释

1、JavaScript是一门弱类型的,解释型的脚本语言
**2、在一个JavaScript的程序中(在一个script标签中),要执行程序,会先对两个关键词,进行预解释 var function **
**3、如果先调用,后定义的变量,执行结果是undefined **
4、如果先调用,后定义的函数,可以正常执行
5、预解析/预解释的无下限操作
只要是写在程序中的 var 和 function关键词,都会被预解析
不管程序会不会被执行,都会执行预解析
如果是不执行的程序, var 会 进行预解析,如果提前使用,结果是undefined
如果是函数, function 会预解析,但是不执行的函数,不能调用的

函数不能调用的原因:
预解析会执行,也会存储内存地址,但是程序不执行,这个内存地址中就没有内容,执行结果会报错
6、函数执行时,也有预解释

实例讲解:
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值