js的预编译

js执行的三步:语法检查,预编译,解释执行.

js预编译前:window对象==全局

1.任何位置上的变量未声明直接赋值是全局变量,发到window里

2.在函数外声明的变量也是全局,放到window里.

js预编译时:对函数来说

1.生成函数的AO对象(作用域)

2.把函数的形参和变量声明放到AO对象中,作为属性

3.形参和实参相对应(实参的值传给形参)

4.把函数声明的函数名放到AO对象里,作为属性

js预编译结束后,进行解释执行,执行时,变量和函数的声明不执行

原文地址:https://www.cnblogs.com/fangming/p/8848228.html

时间: 2024-10-14 10:09:46

js的预编译的相关文章

JS的预编译和执行顺序 详析

原文:JS的预编译和执行顺序 详析 最近在复习javascript的事件处理时发现了一个问题,然后也是我来写javascript的预编译和执行顺序的问题   代码:   复制代码 代码一 <html>   <head>     <title>事件处理</title>     <meta http-equiv="content-type" content="text/html;charset=utf-8"/>

js的预编译机制

1.var定义的是“当前作用域下的一个变量”,当在函数内部不使用var声明时,会被当做全局变量而不是函数内的局部变量(严格模式下还会报错) 2.js的预编辑:[对定义式函数]直接创建为作用域上的函数变量,并将其值初始化为定义的函数代码逻辑,也就是为其建立了可调用的函数变量. 3.js的预编辑:[对var定义的变量] 会在开始先全部找出来,并且将初始值设为undefined 4.[对上面代码的解释]:第一个yourname是undefined:在js开始解析时获得了第一行的yourname声明和函

JS的预编译和执行顺序 详析(及全局与局部变量)

最近在复习javascript的事件处理时发现了一个问题,于是总结一下:javascript的预编译和执行顺序的问题:   <html> <head> <title>事件处理</title> <meta http-equiv="content-type" content="text/html;charset=utf-8"/> <script type='text/javascript'> //页

js 变量预编译

js是按照顺序执行的: 但是在js中会对var和function进行预编译: alert(show); function show(){ var a; } 比如以上代码,alert就会输出function. 但是对于var的预编译,刚刚是自己理解错了, 如下代码,a输出都是undefined. b会直接报错,b is not defined. alert(a); alert(b); var a; 汇总下要点: 1.js在页面加载过程中顺序执行.但是分块预编译.执行. 2.JS 在执行前会进行类似

js的预编译、全局变量、局部变量相关知识

1.未声明的变量就赋值, 此变量归全局变量window对象所有 console.log(a); //a is not defined a=10 console.log(a); //10 等价于 console.log(window.a) function test(){ var a = b = 123; } test(); console.log(b) //123 b未声明就赋值归为window对象所有, 等价于console.log(window.b); console.log(a) //a

JS函数/预编译

一.函数: 1.函数声明: function test() {}; 2.函数表达式: var test=function () {}; 3.参数: function test(a,b) {        //a,b形参 //var a; //var b; var c=a+b; document.write(c); } test(1,2);       //1,2实参 4.实参列表: arguments[]; 二.预编译: 1.预编译: (1) 创建AO对象:(全局创建的为GO===window)

Js 预编译

开始 所有的测试,都是chrome浏览器. js本身是脚本语言,可以不经过编译直接运行,但是在进入每一个<script>标签,或者js文件的时候,这样的情况下,浏览器会给js一个预编译的过程. 这样就有必要讨论一下预编译了. 解析的状态是首先引入一个代码段,也就是之前提到的标签或者文件.读入整个代码段,进行解析,解析的方式是遇到变量就声明, 对变量声明为undefined,对函数做标记,这个就是预解析,但是如果声明了同名的函数,使用最后一个.变量都是undefied,只有触发的时候,才会激活.

JS预编译 ---2018.6.22

1.a标签有特点是  在podding和margin情况下不能撑开 2.今天学习了JS的预编译感觉贼迷糊,先听课后面多做练习解决问题: 创建ao对象; 找形参和变量声明,将变量名和形参名作为AO属性名,值为undefined; 将参考值和形参统一; 在函数体里面找函数声明,赋值于函数体. 原文地址:https://www.cnblogs.com/zs-xanadu/p/9215739.html

js 预编译环节的变量提升

有些东西需要先告诉你怎么用,再去理解定义 关于变量的提升 function test () { console.log(a) var a = 100 console.log(a) }; test () // undefined // 100 执行步骤 function test () { var a = undefined console.log(a) a = 100 console.log(a) } 关于函数的提升 function test () { console.log(a) funct