博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js中作用域链的问题
阅读量:7142 次
发布时间:2019-06-29

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

为什么没有var声明的变量是全局的?

是因为,在js中,如果某个变量没有var声明,会自动到上一层作用域中去找这个变量的声明语句,如果找到,就使用,如果没有找到,继续向上查找,一直查找到全局作用域为止,如果全局中仍然没有这个变量的声明语句,那么会自动在全局作用域进行声明,这个就是js中的作用域链

 

 这里  我们在每一层函数后面都进行了调用,f3调用,因为f3函数里面的i没有使用var声明,所以,会向上一层f2找,发现也没有声明,继续找f1,然后找到全局变量i,所以,就直接修改了i的值为40

下面是另一种情况,当这三层函数中,任意一层中有声明  i

这就是js的作用域链。

 

 

局部访问全局使用作用域链     (内部访问外部的变量就是通过作用域链)

全局访问局部可以使用闭包进行模拟

 

转载于:https://www.cnblogs.com/xiaqilin/p/6909984.html

你可能感兴趣的文章
android小代码
查看>>
MyDataBase
查看>>
用GTK开发一个画图程序(windows)
查看>>
第十四章 磁盘配额
查看>>
Python 代码性能优化技巧
查看>>
关于memcache的一些知识
查看>>
jsp中文件的上传与下载
查看>>
千千静听安卓版是百度音乐旗下一款手机音乐软件,集本地歌曲播放
查看>>
OPC UA 统一架构学习3
查看>>
jms简介和原理
查看>>
理解并取证:SSH远程管理协议的工作原理
查看>>
centos apache搭建https
查看>>
QQ开放狮子下山 主动的华丽转身
查看>>
oracle 常用查询
查看>>
QT常用类
查看>>
马哥10-3
查看>>
nfs
查看>>
企业如何预防数据泄露
查看>>
整合SSH运行添加数据出现错误attempt to create saveOrUpdate event with null entity
查看>>
Django 和 Ajax 简介
查看>>