两个实例轻松理解js函数预解析】的更多相关文章

js函数预解析 例子1: 先上一段代码,看看能不能写出最终的执行结果. console.log(a); var a = 1; console.log(a); function a(){ console.log(2); } var a = 3; console.log(a); function a(){ console.log(4); } console.log(a); a(); 运行结果: 解释一下: 首先预解析阶段遇到 var a = 1:声明变量a 然后遇到第一个函数a声明,这时由于和变量a…
JS的预解析包括两部分: 1. 变量提升 2. 函数声明 对于变量提升, 可以看下下面这块代码 console.log(name); // undefined var name = "Lilei"; 对于函数声明, 可以看下下面这块代码 sayHello(); // "Hello" function sayHello() { console.log("Hello"); } 由上面的执行结果, 我们可以知道JS的预解析对变量和函数的行为是不一样的,…
一,预解析:寻找var  function  形参     a=undefined    fn = function fn(){ alert(); } 二,逐行解读代码:    1.表达式    2.函数调用(作用域)        一 预解析:寻找var function 形参        二 逐行解读代码:  第二种情况 //当变量与函数名字相同时,丢变量,保函数  第三种情况 //多script标签时,从上到下依次解析并解读每一个作用域.  第四种情况//作用域链 : 执行表达式时,先在…
在ES6之前,变量使用var声明,会存在变量的预解析(函数也有预解析).ES6引了let和const,但是现阶段ES6并没有完全普及,而且很多比较老的代码都还是按照ES5的标准甚至是ES3的标准来书写的,要想得心应手的维护之前的代码个人感觉还是很有必要了解下js的预解析机制. 一.变量和函数在内存中的存在形式 JavaScript中的变量类型和其他语言一样,有基本数据类型和引用数据类型.基本数据类型包括:undefined.null.boolean.String.Number:引用数据类型主要是…
函数在执行时,会在函数体内部自动生成一个this指针.谁直接调用产生这个this指针的函数,this就指向谁. 怎么理解指向呢,我认为指向就是等于.例如直接在js中输入下面的等式: console.log(this===window);//true 情况不同,this指向的对象也不同.例如: 1.  函数声明的情况 var bj=10; function add(){ var bj=20; console.log(this);//window console.log( console.log(b…
目录 一.Vue基础 (一)什么是Vue (二)为什么学习Vue (三)如何使用Vue 二.Vue指令 (一)文本指令 (二)事件指令v-on (三)属性指令v-bind (四)表单指令v-model (五)条件指令v-if (六)循环指令v-for (1)用法 (2)基于循环指令的todolist案例 (七)斗篷指令v-cloak 三.Vue实例成员 (一)el:实例 (二)data:数据 (三)methods:方法 (四)computed:计算 (五)watch:监听 (六)delemite…
<!DOCTYPE html><html><head></head><body><script>//---------------------- 函数预编译 ------------------------------------------------// 也可以理解为 function声明语句被提升到作用域顶部// 注意不能在firebug的控制台下直接运行,控制台环境下没声明语句的提升效果var ifunction bar(){…
hey,guys!我们一起总结一下JS预解析吧! 首先,我们得搞清楚JS预解析和JS逐行执行的关系.其实它们两并不冲突,一个例子轻松理解它们的关系: 你去酒店吃饭,吃饭前你得看下菜谱,点下菜(JS预解析),但吃的时候还是一口一口的吃(JS逐行执行)! OK,解决下面五个问题,JS预解析就算过了~~(前提:对JS变量作用域有清晰理解) 一.JS预解析是什么? 其实就是对程序要用到的材料(变量,函数)给一个初始值,并存到一个表中(我自己虚构的),当程序运行到那一行时,就来这个表看有没有初始值,没有就…
关于javascript中的函数:  1.预解析:把所有的函数定义提前,所有的变量声明提前,变量的赋值不提前  2.执行 :从上到下执行,但有例外(setTimeout,setInterval,ajax中的回调函数,事件中的函数需要触发执行) 函数的参数可以是一个函数,这个函数可以直接调用 函数可以作为返回值  函数的嵌套形成闭包 function有双重身份:  1.对象  2.构造函数 一.定义 预解析:在当前作用域下,js运行之前,会把带有var和function关键字的事先声明,并在内存中…
预解析指的就是,在js文件或者script里面的代码在正式开始执行之前,进行的一些解析工作.这个工作很简单,就是在全局中寻找var关键字声明的变量和通过function关键字声明的函数. 1.寻找 var function 参数 等关键字,根据var a提前设置为 a=未定义(undefined) ,所有的变量,在正式运行前都提前赋值了一个未定义. 2.函数在正式运行代码前,都是整个函数块.fn1=function  fn1(){alert(2);} 执行js代码一般分两步:1.预解析代码.  …