技术经验分享:javascriptvar的理解

简介: 技术经验分享:javascriptvar的理解

"

认识var必须了解

1. var的作用是声明当前作用域下的变量。

2. V8引擎在解释JS代码时做了两个动作,

  一是从头到尾抽出所有变量和函数并赋初值 ;

  二是再来一遍给变量运算赋值(引用);

3. 在做第一遍动作时,所有标识符指向undefined ,函数指向函数本身。

4. 参数是一种运算。

5. 局部作用域内没有时找时到向外找,直到找到为止,否则undefined。

var a = 1;

function //代码效果参考:https://v.youku.com/v_show/id_XNjQwMDM2ODcwNA==.html

fn1() {

console.log(a);

var a = 2;

}

fn1(); // undefined

console.log(a); //1

解释器的第一次操作

找到变量a,赋值为undefined

函数fn1 初值就是本身也就是 fn1={console.log(a);var a =2};

解释器的第二次操作

变量a赋初值,a指向1

当发生函数调用时,fn1是一个新的作用域,重复以上的解释步骤

找到变量a,赋值为undefined

所以在执行函数fn1()的console.log(a)时 a的值为undefined

而fn1()下面的console.log(a)里面的a是全局变量

下面例子也证明了解释器的工作步骤

var a //代码效果参考:https://v.youku.com/v_show/id_XNjQwNjgyMjI4MA==.html

= 1;

function fn1() {

console.log(a);

a = 2;

}

fn1(); // 1

console.log(a); // 2

fn1函数里面在解释时,没有a这个变量,于是向上查找 找到全局变量 var a =1

于是fn1里面a就变成了全局变量,进行运算,于是最后函数外的console.log()打印出来的结果就是2

1 var a = 1;

2 function fn1(a) {

3 console.log(a);

4 a = 2;

5

6 }

7

8 fn1(a); //结果为1

9 console.log(a);//结果为1

同样,第一次操作动作 抽取 了 a 和 fn1 , 第二次操作动作赋值,当遇到函数调用时,继续执行前两个动作

找到了 参数 a并赋上初值undefined fn1 传入参数a 这里的a是全局变量var a = 1,参数也是一种运算,相当于是给参数a赋值了1

于是函数内部的console.log(a)打印出1

第4行的a指向参数,是函数范围内的变量,进行 a =2的计算后,函数内的局部变量a的值为2

第9行的console.log(a) 中的a 为全局变量,打印出来的结果为1。


"
image.png
相关文章
|
JavaScript 前端开发
JavaScript中的var变量详解:定义、提升与注意事项
JavaScript中的var变量详解:定义、提升与注意事项
439 2
|
11月前
|
弹性计算 负载均衡 监控
slb配置健康检查
slb配置健康检查
270 5
|
前端开发 JavaScript
vite中css最佳实践:使用postcss完善项目中的css配置
【8月更文挑战第3天】使用postcss完善项目中的css配置
3340 1
|
JavaScript 前端开发 数据可视化
正则表达式完整指南(下)
正则表达式完整指南(下)
564 0
正则表达式完整指南(下)
|
中间件 数据库连接 API
C#数据分表核心代码
C#数据分表核心代码
151 0
|
机器学习/深度学习 人工智能 数据可视化
📊数据说话,AI领航:精准分析,让职场决策从此有据可依!
【8月更文挑战第1天】在数据驱动的职场中, AI助力精准决策。
270 0
|
前端开发 C# Windows
WPF/C#:如何实现拖拉元素
WPF/C#:如何实现拖拉元素
183 0
|
运维 监控 Kubernetes
Kubernetes Pod深度解析:构建可靠微服务的秘密武器(下)
本文旨在全面而深入地探讨Kubernetes(K8s)中的Pod概念,为读者提供对其核心特性和应用场景的深入理解。Pod作为Kubernetes的最小部署单元,承载着容器化应用的核心功能,是构建云原生应用的重要基石。
|
计算机视觉
OpenCV按位逻辑运算
OpenCV按位逻辑运算
78 0
|
运维 API C#
【Unity游戏破解】外挂原理分析
【Unity游戏破解】外挂原理分析
1204 0
【Unity游戏破解】外挂原理分析