进阶学习js中的执行上下文

news/2024/7/4 1:19:20

  在js中的执行上下文,菜鸟入门基础 这篇文章中我们简单的讲解了js中的上下文,今天我们就更进一步的讲解js中的执行上下文。

1、当遇到变量名和函数名相同的问题。

var a = 10;
function a(){
    console.log(1);
}
a(); //报错

  如果你觉得函数a会覆盖变量a那你肯定是js的新朋友,为什么这里会报错呢?我记得我在基础的执行上下文文章中说过变量声明提前的概念,对这里就是因为这个原因,但是在上面一篇文章中还有一个问题我没有去讲。

  那就是函数的声明比变量的声明顺序更早,上面那段代码相当于下面这段代码:

function a(){
    console.log(1);
}
var a = undefined;
a = 10;
a();

函数a被变量a覆盖了。

  2.当函数在另外一个函数中调用的时候

var a = 1;
function fn1(){
    console.log(a);
}
function fn2(){
    fn1();
}
a = 2;
fn2(); //2

  这里没有输出1是因为fn1嵌套在fn2中,所以函数fn2没有执行的话,fn1自然也没有被执行,又因为fn2是在a赋值为2以后才执行的所以fn1打印的就是2,此时a的值就是2。

到这里,关于js的执行上下文就可以告一段落了,当然如果后期遇到其他的问题,会继续更新到这一文章中,之所以这一章讲解的比较简单是因为有上面一节的基础。


http://www.niftyadmin.cn/n/4610651.html

相关文章

Docker中Tomcat容器访问出现404

1. 在后台创建一个tomcat容器,设置端口号为8899 2. 访问为404 3. 进入这容器,发现webapps下面为空 4. 将webapps.dist 下的东西拷到webapps 5. 访问成功

CentOS 6.5编译安装Nginx+MySQL+PHP

一、配置防火墙,开启80端口、3306端口,关闭SELINUX[rootZabbix ~]# vim /etc/sysconfig/iptables -A INPUT -i lo -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 8…

L'Hospital法则及其应用

from: http://math.fudan.edu.cn/gdsx/XXYD.HTM

搜索 问题 D: 神奇密码锁

这道题个人认为隐含着状态转换,所以想到的还是BFS,将其中一位数加一或减一或交换临近两位,进入下一状态,使用一个大小为10000的bool数组判重,由于BFS的特性,得到的一定是最小步数; 普通BFS代码…

Cocopods安装和升级备忘录

2019独角兽企业重金招聘Python工程师标准>>> 这是两个多月前写在mac 备忘录上的一个备忘文档,现在分享出来,希望对新手或者需要的人有帮助 cocopods安装 相关概念解释 Homebrew(brew) Homebrew(brew) 是macOS上的包管理器,安装命令行工具&…

layui table中 field参数

一、 layui table中 field参数是个对象,点不出来 解决: 在实体类中增加get方法 二、field参数判断后台的值进行显示

crontab文件的真实位置

Linux在相应用户下,用crontab -l 命令可以查看该用户定时执行的任务,-e可以编辑,但是其真实文件在哪儿呢??以CentOS为例,其真实的位置在:/var/spool/cron下面,有执行定时…

关于Oracle中sysoper这个系统权限的问题

我们都知道Oracle数据库安装完之后。默认的会有这样几个系统角色或权限。nomal,sysdba,sysoper等等,之前每次登录Oracle的时候。都是直接以conn / as sysdba 的身份登录的。可是一直都不知道sysoper是用来干嘛的,仅仅知道是个系统操作员。 然后&#xff…