热重载就是页面每次改动,不需要手动去刷新,可自动刷新.保持vuex的状态. JS之预编译 JavaScript的预编译 编译器 JS引擎 作用域三者之间的关系 建议你先去看看你不知道的JavaScript 聊聊JavaScript 编译器,引擎,作用域…
预编译与函数词法作用域(Precompiled & Scoped) 预编译 Javascript脚本的宿主在执行代码之前对脚本做了预编译处理,比如浏览器对Js进行了预编译,编译器会扫描所有的声明(变量.函数.对象,无论它们是否嵌套在其他函数中,都会被扫描),对声明进行编译,编译期间会忽略任何可执行的语句,直到编译结束后才会调用解释器对代码进行执行. 1.为声明的变量(变量式函数被视为变量)划分内存空间,标识符=Undefined(未初始化),执行时才会发生初始化. 2.为所有声明式函数划分内存空…
(一)JS预编译四部曲: 1,创建AO对象. 2,找形参和变量声明,将变量和新参名作为AO属性名,值为undefined. 3,将实参值和形参值统一. 4,在函数体里找函数声明,值赋给函数体. (二)作用域: 1.全局变量:函数外声明的变量,称为全部变量 局部变量:函数内部使用var声明的变量,称为局部变量 作用域在JS中同样也是一个重要的概念.它不复杂,因为ES5中只有全局作用域和函数作用域,我们都知道他没有块级作用域.但在ES6中多了一个let,他可以保证外层块不受内层块的影响.即内层块形成…
隐式类型转换 调用Number()当有运算符(加减乘除,求余)时,会调用Number()转为数字再运算,除了 加 当 有字符串时就变身成拼接Boolean();String(); typeof()string返回的类型 预编译 在<script>里面的代码,进行预编译,将变量声明,,函数声明提高在逻辑的前面;执行代码时在GO(即window对象)中取出值,var a = 1;function text(){}例如 Go{ a : undefined; text : function(){}}当…
关于js的执行原理,除去html页面中直接添加的代码,js代码的放置可以分为两类. //情形a           <script type="text/javascript" src="xxx.js"$amp;>amp;$lt;/script>           //情形b            <script type="text/javascript">           code......       …
js引擎运行分为两步,预解析 代码执行 (1)预解析: js引擎会拿js里面所有的var还有 function 提升到当前作用域的最前面 (2)代码执行:按照代码书写的顺序从上往下执行 预解析分为:变量预解析(变量提升)和函数预解析(函数提升) 变量提升就是把所有的变量声明提升到作用域的最前面,不提升赋值操做 函数提升:就是把所有函数提升到作用域的最前面,不调用函数 作用域链:内部函数访问外部函数的变量时,采取的是链式查找的方式来决定取哪个值,一层(大括号)一层往外找 下面有几个小题目,大家先尝…
一.概述 js是一种非常灵活的语言,理解js引擎的执行过程对于我们学习js是非常有必要的.看了很多这方便文章,大多数是讲的是事件循环(event loop)或者变量提升的等,并没有全面分析其中的过程.所以觉得把这个js执行的详细过程整理一下,帮助更好的理解js. 1.1基础概念 js是单线程语言. 在浏览器中一个页面永远只有一个线程在执行js脚本代码 js是单线程怨言,但是代码解析是非常迅速的,不会发生解析阻塞. js是异步执行的,通过实践循环(event loop)方式实现的 暂时我们不考虑事…
JavaScript 预编译与作用域 JavaScript 预编译的过程和作用域的分析步骤是 JS 学习中重要的一环,能够帮助我们知道代码的执行顺序,更好理解闭包的概念 预编译 JavaScript 执行步骤 检查通篇的语法错误 -> 预编译 -> 解释执行 暗示全局变量 变量不声明直接赋值,挂载到 window 对象下 a = 1; console.log(a); // 1 function test() { var b = c = 1; } test(); console.log(c);…
概述 js是一种非常灵活的语言,理解js引擎的执行过程对我们学习javascript非常重要,但是网上讲解js引擎的文章也大多是浅尝辄止或者只局部分析,例如只分析事件循环(Event Loop)或者变量提升等等,并没有全面深入的分析其中过程.所以我一直想把js执行的详细过程整理成一个较为详细的知识体系,帮助我们理解和整体认识js. 在分析之前我们先了解以下基础概念: javascript是单线程语言 在浏览器中一个页面永远只有一个线程在执行js脚本代码(在不主动开启新线程的情况下). javas…
今天工作需要,搜索下JS面试题,看到一个题目,大约是这样的 <script> var x = 1, y = z = 0; function add(n) { n = n+1;  } y = add(x); function add(n) { n = n + 3; } z = add(x); </script> 问执行完毕后 x, y, z 的值分别是多少? 仔细看的人马上就知道了, x, y 和 z 分别是 1, undefined 和 undefined. 不过,如果将两个 ad…