js的解析与执行过程  分全局  {预处理阶段和执行阶段}  函数{预处理函数和执行阶段}
 
1/创建词法环境(环境上下文)
LexicalEnvironment   === window
{
}
用声明的方式创建的函数还会被加到词法环境中:
 
1。用var 定义的变量
比如定义了var a=5
function  xxx(){}
2。var g = function () {}//函数表达式
在词法环境中就会有:a:undefined   xxx : 对函数的一个引用
 
f();
g();
function f(){}
var g = function  () {}
执行时:f可以执行。g报错(不是使用的声明的方式创建的,在预处理的阶段是undefaule,所以报错)
 
3。处理函数声明右冲突,会覆盖 
     处理变量时右冲突,会覆盖
alert(f);
function f() {console.log('111')};
var f=5;
 
alert(f);
var f=5;
function f() {console.log('111')};
都是输出function f() {console.log('111')};   结论就是:函数是一等公民
 
例子:
alert(a);
//alert(b);   报错
alert(f);
alert(g);
var a = 5;
b = 6;
alert(b);
function f() { console.log ('f')};
var g = function g() { console.log ('g')};
alert(g);
 
 
undefault
function f() { console.log ('f')};
undefault
6
function g() { console.log ('g')}
 
 
4/在函数的预处理阶段,每调用一次,产生一个词法环境,其他跟全局一样
function f(a,b)
{
     alert(a);
     alert(b);
     var b = 100;
     function a(){}
}
 f(1,2);
=>funtion  =>2
 
5/如果没有用var声明的变量,会被成为最外部LexicalEnvirment成员
function f1(){
     function f2 (){
     b = 100;
     }
     f2();
}
f1()
 
window.b
=>100
 
 
 

js的解析--预处理(三)的更多相关文章

  1. JS的解析与执行过程—全局预处理阶段之全局词法环境对象

    问题:有如下代码 var a = 1; function pop() { alert(a); var a = 5; } pop();//执行结果,弹出undefined 这段代码的执行结果为undef ...

  2. underscore.js源码解析(三)

    最近工作比较忙,做不到每周两篇了,周末赶着写吧,上篇我针对一些方法进行了分析,今天继续. 没看过前两篇的可以猛戳这里: underscore.js源码解析(一) underscore.js源码解析(二 ...

  3. JS的解析与执行过程

    JS的解析与执行过程 全局中的解析和执行过程 预处理:创建一个词法环境(LexicalEnvironment,在后面简写为LE),扫描JS中的用声明的方式声明的函数,用var定义的变量并将它们加到预处 ...

  4. JS的解析机制

    JS的解析机制,是JS的又一大重点知识点,在面试题中更经常出现,今天就来唠唠他们的原理.首先呢,我们在我们伟大的浏览器中,有个叫做JS解析器的东西,它专门用来读取JS,执行JS.一般情况是存在作用域就 ...

  5. js字符串转日期,js字符串解析成日期,js日期解析, Date.parse小时是8点,Date.parse时间多了8小时

    js字符串转日期,js字符串解析成日期,js日期解析, Date.parse小时是8点,Date.parse时间多了8小时 >>>>>>>>>&g ...

  6. vueJs 源码解析 (三) 具体代码

    vueJs 源码解析 (三) 具体代码 在之前的文章中提到了 vuejs 源码中的 架构部分,以及 谈论到了 vue 源码三要素 vm.compiler.watcher 这三要素,那么今天我们就从这三 ...

  7. json进阶(一)js读取解析JSON类型数据

    js读取解析JSON类型数据 一.什么是JSON? JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式,同 ...

  8. 前端之JavaScript:JS之DOM对象三

    js之DOM对象三   一.JS中for循环遍历测试 for循环遍历有两种 第一种:是有条件的那种,例如    for(var i = 0;i<ele.length;i++){} 第二种:for ...

  9. Node.js写文件的三种方法

    Node.js写文件的三种方式: 1.通过管道流写文件 采用管道传输二进制流,可以实现自动管理流,可写流不必当心可读流流的过快而崩溃,适合大小文件传输(推荐) var readStream = fs. ...

随机推荐

  1. 【IOS】2.基础

    1.Identifers命名规则 Identifers is combined with letters, underline, dollars, numbers must begin with le ...

  2. Java基础(62):Eclipse调试(Debug)的10条技巧(转)

    在看这篇文章前,我推荐你看一下Eclipse 快捷键手册 先提三点 不要使用System.out.println作为调试工具 启用所有组件的详细的日志记录级别 使用一个日志分析器来阅读日志 1.条件断 ...

  3. CSS_03_01_CSS选择器中单选择器:关联选择器档

    选择器中单选择器:关联选择器档 第01步:编写select.css @charset "utf-8"; /* span标签中的b标签的exam类 */ span b.exam{ b ...

  4. MVC模型 简介

    MVC (Modal View Controler)本来是存在于Desktop程序中的,M是指数据模型,V是指用户界面,C则是控制器.使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用 ...

  5. paper 43 :ENDNOTE下载及使用方法简介

    转载来源:http://blog.sciencenet.cn/blog-484734-367968.html 软件下载来源: EndNote v9.0 Final 正式版:http://www.ttd ...

  6. paper 25 :SVM支持向量机是什么意思?

    转载来源:https://www.zhihu.com/question/21094489 作者:余洋链接:https://www.zhihu.com/question/21094489/answer/ ...

  7. 阿里 drds 分布式数据库分节点查询

    mybatis 模式下,xml 中写法 <select id="selectFailDetailOneNode" resultMap="BaseResultMap& ...

  8. 本周PSP+历年作品评论

    本周PSP 类别 内容 开始时间 结束时间 间断时间 净时间(min) 9月11号 看书 构建之法 19:00 21:00 14 106 9月12号 写程序 词频统计多需求版 8:00 14:23 3 ...

  9. 台电幻彩u盘拆解

  10. JavaScript获取后台C#变量以及调用后台方法

    http://www.educity.cn/develop/495493.html 有时需要在JavaScript中获取后台变量的值,来判断JavaScript的执行逻辑,或者需要调用C#后台方法获取 ...