var i=10; var j=3; function a() { console.log(i);//undefined console.log(j);//3 var i = 2; console.log(i);//2 }; a();
原来JS在执行过程之前,会对【var】和【function】定义做“预解析”。
解析引擎以块为单位级别,执行所有Var变量的创建,并赋予一个初始值undefined。
当a执行时,它的执行环境中有i的声明,所以不会使用作用域链上的全局变量i——这个i是初始化了,但是不用它。当运行第一个console.log(i)时,i么有初始化,故为undefined。
Refer: Jessica's Blog
相关推荐
js 预解析 题目 答案 解析
JavaScript上机实验题 涉及一些javascript的应用 试题也比较适中
javascript试题 附答案 适于初学者
JavaScript课堂习题答案JavaScript课堂习题答案JavaScript课堂习题答案JavaScript课堂习题答案JavaScript课堂习题答案JavaScript课堂习题答案JavaScript课堂习题答案JavaScript课堂习题答案JavaScript课堂习题答案...
javascript面试题汇总javascript面试题汇总javascript面试题汇总
一份js基础测试题,包含选择题和程序题,含答案解析,选择题(50道),程序题(4道),可用于员工考核
js 预解析
js练习题
预解析的的不同机制 预解析也叫预声明,是提前解析声明的意思;预解析是针对变量和函数来说的;但是变量和function的的预解析是两套不同的机制; 当浏览器加载我们的HTML页面的时候,首先会提供一个供JS代码执行的...
JavaScript面试题,JS面试题,WEB前端面试题下载.pdf
常见的 Vue.js 十大面试题及技术要点分析常见的 Vue.js 十大面试题及技术要点分析常见的 Vue.js 十大面试题及技术要点分析常见的 Vue.js 十大面试题及技术要点分析常见的 Vue.js 十大面试题及技术要点分析常见的 Vue...
今天骚凯问了一道变量名冲突的题目,感觉很有意思,顺便也复习一下预解析的一些知识,有不对的地方忘前辈大神指正,题目是这样的: var a=100; function a(){ console.log(a); } a(); 这个串代码执行完会报错 : ...
本文实例讲述了JavaScript预解析及相关技巧。分享给大家供大家参考,具体如下: 变量 同样,以这两个小例子的错误对比提示开始。 alert(y1); //代码段1 var y1 = 'dddd'; alert(y2); //代码段2 // ...
一道关于JavaScript变量作用域的面试题_.docx
JS javascript 图片 预加载 实现图片的加载
预解析:在当前作用域下,js运行之前,会把带有var和function关键字声明的变量先声明,并在内存中安排好。然后从上至下解析js语句。而且function的声明优先于var声明。 不多说,,直接上代码 正规写法: var num=10;...
一道关于Ajax、Jquery的面试题,请各位好友把它做好
NULL 博文链接:https://beck5859509.iteye.com/blog/505975
javascript 对象操作作业题,面向对象操作题
HTML+Javascript+CSS测试题