js变量提升_一道JS变量提升题
var a = 0;if(true){a = 1;function a(){};a = 21;console.log(a);}console.log(a);// 21 1
当前上下文代码执行之前,会将带var/function的进行声明/定义。
当遇到“{}”时,新版浏览器和老版浏览器的处理不一致。
老版浏览器(IE10以下)忽略“{}”的影响,继续声明/定义,不存在块级作用域
新版浏览器中“{}”里的function只声明不定义,“{}”若出现funciton/let/const关键字,会创建一个块级上下文
本题在全局变量提升阶段会声明一个变量a,在块级作用域内的function a同样会声明,但是不定义。 代码继续执行
var a = 0;
在全局下给a赋值0。
if(true){a = 1;function a(){};a = 21;console.log(a);}
代码执行到条件判断时,创建一个块级作用域,在块级作用域内进行变量提升,声明并且定义funciton a。
a = 1;
块级作用域内给a赋值为1。
继续执行到函数定义的地方为了兼容ES3和ES6浏览器会做这样一步操作:
把代码之前所有对a的操作映射到全局
于时之前对块级作用域内变量a赋值为1的操作也会映射到全局的变量a,所以全局的a变成了1。所以最后控制台打印的是结果是21,和1,因为全局的a映射了。
js变量提升_一道JS变量提升题相关推荐
- js define函数_聊聊JS模块化发展历程
1 引言 如今,Javascript 模块化规范非常方便.自然,但这个新规范仅执行了2年,就在 4 年前,js 的模块化还停留在运行时支持,10 年前,通过后端模版定义.注释定义模块依赖.对经历过来的 ...
- java变量设置_配置环境变量
1.安装完成后,右击"我的电脑",点击"属性",选择"高级系统设置": 2.选择"高级"选项卡,点击"环境变量 ...
- js知识点 掘金_掘金js
js的基本类型有哪些?引用类型有哪些?null和undefined的区别. 如何判断一个变量是Array类型?如何判断一个变量是Number类型?(都不止一种) Object是引用类型嘛?引用类型和基 ...
- js增加属性_前端js基础2
JavaScript ECMAScript(ES):规定了js的一些基础的核心知识(变量.数据类型.语法规范.操作语句等) 3/5==6/7 说出ES5和ES6的区别? DOM:document ob ...
- js禁用按钮_探索js让你的网页“自己开口说话”
本文为作者行舟客投稿,原文地址为https://yunxiaomeng.blog.csdn.net/article/details/108672415 欢迎点赞! 背景 最近一直在研究音视频流,正好想 ...
- 简述js原型链_简述js
简述js原型链 (在React 16.8.0之前)((before React 16.8.0)) Yeah, I know that there are terabytes of data avail ...
- js pug 代码_用JS写的windows95操作系统
README.md 这是Windows95,在Electron应用程序中运行.是的,这是完整的. 它有用吗? 是的,可以.实际上,在macOS,Windows和Linux上.请记住,这完全是用Java ...
- js 时间比较_成都js聚合物弹性防水涂料生产厂家来电洽谈_鹏晨防水
成都js聚合物弹性防水涂料生产厂家来电洽谈,I型属适用于屋面防水因为屋面24h温差大,基层易开裂.所以要用断裂伸长率高弹性好的适应基层开裂性的I型JS涂料,II型适用于卫生间车库地下室等长期有水浸泡水 ...
- js 字符串截取_【js】让你一次性搞清楚slice,substr,substring字符串截取函数
假设 str是个字符串变量,且设置值为"LittleAnn",字符长度是9 那么这三个函数使用方式: var 相同点: start为开始位置下标,end为结束位置下标 下标从0开始 ...
最新文章
- 在android工程中,res目录下又有anim、drawable、layout、menu、raw、values和xml文件夹,分别用来保存?...
- Ubuntu 18.04下的Python和OpenCV的安装
- getpeername函数与getsockname函数的介绍
- 大数运算(6)——大数阶乘(求位数)
- 关于string.Template的简单介绍
- scikit-learn学习笔记(五)Logistic regression(逻辑回归)
- Permutation Partitions CodeForces - 1326C(组合数学+思维)
- TCP UDP HTTP 的关系和区别
- 解题:洛谷3402 可持久化并查集
- 中国水培营养素行业市场供需与战略研究报告
- 线程同步:喂,SHE
- unity cube自转的同时公转
- mysql definer super_技术分享 | 改写 mysqldump 解决 DEFINER 问题
- HeadFirstJava 1,2,3
- IT行业含金量较高的证书汇总
- 谈cntv.cn的启用
- 2022考研资料每日更新(2021.05.07)
- 蜀门 - 青城加点完美攻略
- 第12周 项目4-输出从顶点u到v的所有简单路径
- 马化腾说视频号是全公司希望