js中的预解析与变量名提升问题
来源:互联网 发布:淘宝店掌柜名怎么修改 编辑:程序博客网 时间:2024/06/05 07:17
在这里,我将细致的讲解与预解析声明和名字提升等相关概念,并用例子来详细分析
预解析的过程: 程序在执行过程会先将代码读取到内存中检查,会将所有的申明在此时标记,所谓的标记就是让js解析器知道有这个名字,后面使用名字的时候,不会出现未定义的错误,这个标志过程就是提升
上面所提到的申明包括两个部分:
1、标识符的申明(就是变量名的申明)
*在申明变量的时候,前面必须要有关键字var该变量才能提升
*变量名的申明就是让解析器知道有这个名字的存在并默认将该变量赋值undefined
2、函数的申明(包括两个部分)
*首先,函数申明和变量申明一样告诉解析器这个名字的存在
*然后,告诉解析器这个函数名的函数体是什么
*函数与表达式有区别,函数申明是单独写在一个结构中,不存在任何语句,逻辑判断中等语句中
下面用一个例子来分析,与解析和提升以及申明和执行过程
var num=123;
function fun(){
console.log(num);
var num=456;
console.log(num);
}
fun();
分析:
1、预解析,提升名字
首先提升变量名num;默认赋值为undefined
然后提升函数名fun以及fun的函数体
2、执行第一句话:
给num赋值为123 即num=123;
接着执行函数调用:
函数调用,进入函数的一瞬间也需要预解析,解析的变量名是num
在函数体内是一个独立的空间,允许使用外部数据,因为与外部的num重名会将外部的num赋值,并把内部的num先默认赋值为undefined;
然后执行函数体内的第一句话; 打印num因为num默认赋值为undefined所以先输出undefined
接着执行函数体内第二句话:给num赋值456及num=456
然后执行第三句话,打印num,所以再输出456
所以,先输出undefined再输出456
- js中的预解析与变量名提升问题
- js中的变量提升
- js中的变量提升
- JS中的变量提升
- 预解析与函数变量声明提升
- js中的变量名和函数名重名问题
- js 变量 函数名的提升
- JS中的函数提升及变量提升
- js中的变量提升和函数提升
- JS变量名和函数名的提升
- 预解析 var 变量提升 函数提升
- JS中的函数声明提升和变量声明提升
- JS-作用域与变量声明提升
- PHP解析单引号字符串中的变量名
- PHP 自定义字符串中的变量名解析
- js中函数与变量名重名
- JS中预解释(变量提升)
- js中的变量声明以及变量名规范
- 黑马商城项目_商品展示结构设计
- planarity安装
- C语言实验——两个数比较
- 虚析构函数
- HDFS高可用(HA)配置
- js中的预解析与变量名提升问题
- BDF编译-ga库动态链接问题
- 镜像同步Android源代码
- 探究服务(二)--AsyncTask
- 设计模式之简单工厂模式
- 《21天实战caffe》 读书笔记(六)
- 虚函数
- vue组件
- HDU 1241 Oil Deposits【深搜练习】