js的解析--预处理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js的解析--预处理相关的知识,希望对你有一定的参考价值。

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的解析--预处理的主要内容,如果未能解决你的问题,请参考以下文章

Express实战 - 应用案例- realworld-API - 路由设计 - mongoose - 数据验证 - 密码加密 - 登录接口 - 身份认证 - token - 增删改查API(代码片段

angularJS使用ocLazyLoad实现js延迟加载

JS的解析与执行过程—(全局预处理阶段)

VSCode自定义代码片段——JS中的面向对象编程

谷歌浏览器调试jsp 引入代码片段,如何调试代码片段中的js

VSCode自定义代码片段9——JS中的面向对象编程