预解析与函数变量声明提升
来源:互联网 发布:java自定义表单设计器 编辑:程序博客网 时间:2024/06/08 14:38
1、预解析:解析器会在代码执行之前进行预解析,在预解析的过程中,会对函数和变量的声明进行提升,注意:只提升声明,不提升赋值。在执行代码的时候才会进行赋值操作。
var a = 10;fn();function fn(){ console.log(a);// undefined var a = 20;}
上面代码的执行结果会输出undefined,因为虽然a已经在全局环境中进行了赋值,但是在函数作用域中,重新定义了一个a,并且只进行了变量的声明提升,还没进行赋值操作,所以输出undefined。
var a = 10;fn(a);function fn(a){ console.log(a);// 10 var a = 20;}
如果把全局作用域中的a当做实参传入进去,会输出10,因为在预解析的时候,函数内a的值已经被赋值为10,然后才被重新赋值的。
2. 吐槽:在这里我只是简单的举了两个例子,由于预解析和函数作用域的关系,很容易让人迷惑,所以类似于这类的面试题层出不穷,仿佛JavaScript的重点都在这儿一样。如果你有兴趣又有时间,可以去网上找类似的题目看看。幸好ES6中对于变量提升和函数作用域进行了改进,这让开发变得更加的快捷方便。
阅读全文
0 0
- 预解析与函数变量声明提升
- 变量函数声明提升
- 变量声明提升 Vs. 函数声明提升
- 变量声明提升和函数声明提升
- 预解析 var 变量提升 函数提升
- Javascript变量与函数的声明与提升
- 变量和函数声明提升
- js函数变量声明提升
- JavaScript变量声明与提升
- 13 JavaScript基础之--变量声明提升和预解析
- 变量提升与函数提升
- 变量提升与函数提升
- 深入理解变量声明提升和函数声明提升
- 深入理解变量声明提升和函数声明提升
- 深入理解变量声明提升和函数声明提升
- Js 变量声明提升和函数声明提升
- JS函数声明提升和变量声明提升
- JS中的函数声明提升和变量声明提升
- LeetCode18--4Sum--数组中某四个元素之和为某个输入的数值,输出这四个元素的值,并且这个四元组唯一
- mfc中设置statictext的字体和颜色
- linux-磁盘的管理
- try-with-resource小demo遇到的一些小问题
- 进程间通信——信号
- 预解析与函数变量声明提升
- HTML5 服务器发送事件 Server-Send
- FTP SFTP TFTP的区别
- 2017.8.1拼多多内推内推笔试题(3)—六一儿童节(贪心问题)
- 字符设备驱动学习(2)
- 每日一点Js(二)
- H5面试题---new操作符具体干了什么呢
- stm32f103串口程序
- 正则表达式