JavaScript的解析器是个什么东西
2016-11-30 16:03
288 查看
最近啃JavaScript基础,看到老师讲几道面试题还挺有意思!
第一题:
第二题
第三题
这三道题如果你懂JavaScript的解析器原理的话就很容易了!
JavaScript代码时由浏览器中的解析器执行的:
解析器:
预解析
先找 var 和 function 和 参数
2.解析一行执行一行
第一道题:
第一步经过预解析,找到var和function
第二步执行代码,执行到function时,再进行一次预解析
接下来就是一步一步执行代码了,在执行的过程中你会发现function中的console.log(num);的num是undefined?
是的,结果就是undefined
后面两道题原理就和第一道题一样,最后一道题要提醒一点:
这句语句在执行之后a是局部变量,因为是用var定义的
b c 是局部变量,因为它没有用var定义,所以执行的结果也有差异
第一题:
var num = 10; fun(); function fun(){ console.log(num); var num = 20; }
第二题
var a = 18; f1(); function f1() { var b = 9; console.log(a); console.log(b); var a = "123"; }
第三题
f1(); console.log(c); console.log(b); console.log(a); function f1(){ var a = b = c = 9; console.log(a); console.log(b); console.log(c); }
这三道题如果你懂JavaScript的解析器原理的话就很容易了!
JavaScript代码时由浏览器中的解析器执行的:
解析器:
预解析
先找 var 和 function 和 参数
2.解析一行执行一行
第一道题:
var num = 10; fun(); function fun(){ console.log(num); var num = 20; }
第一步经过预解析,找到var和function
//var和function提到前面去 var num; function fun(){ console.log(num); var num = 20; } num = 10; fun();
第二步执行代码,执行到function时,再进行一次预解析
//第一步var和function提到前面去 var num; function fun(){ //第二步解析function,找到var提到前面来 var num; console.log(num); num = 20; } num = 10; fun();
接下来就是一步一步执行代码了,在执行的过程中你会发现function中的console.log(num);的num是undefined?
是的,结果就是undefined
后面两道题原理就和第一道题一样,最后一道题要提醒一点:
var a = b = c = 9;
这句语句在执行之后a是局部变量,因为是用var定义的
b c 是局部变量,因为它没有用var定义,所以执行的结果也有差异
相关文章推荐
- 在JavaScript中什么东西不大于零并且不小于零并且不等于零,但却可以大于等于零,也可以小于等于零
- 暂时还没有什么新东西!
- 好久没来写什么东西了:(鄙视下自己~~
- jswdk/jsdk/jdk到底分别是什么东西
- 什么是JavaScript及其特点
- 免费的互联网什么东西值钱?
- javascript的一些东西
- 我来告诉你你学的东西有什么用
- 作bs的为了以后吃饭 必须要学点精深的东西。学什么那。郁闷
- [DNN学习所得]HttpModule到底是个什么东西
- 萨特说过,人总有说点什么,写点什么东西的欲望,我也不例外。
- 恩,还没什么东西。
- [手记](1)什么是JavaScript
- 回过菲的信----或许从此也没有什么东西可以失去了
- 核符号表(Kernel Symbol Table)是什么东西?
- 谁能简单说一下活动目录是什么东西?
- blog到底是个什么东西?
- 你说以0.4k/s的速度下载什么东西你会坚持下载完
- 解惑:灵感之源的博客到底在写些什么东西?
- 快过年了,不知道买什么东西回家父母会很喜欢呢?