分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 前端开发

js预编译

发布时间:2023-09-06 01:59责任编辑:赖小花关键词:js编译
1.js运行三部曲
语法分析  --> 预编译  -->解释执行 
 1.1预编译

① 预编译前奏 —— 全局和局部的概念

console.log(a);function a(a){ ???var a=234; ???function a(){ ???}}var a=123;//全局和局部的概念
1.任何变量,如果变量未经过声明就赋值,次变量就归全局所有
?eg:a=123;
????var a = b = 123;
?output: b:123
?????????a:123
2.一切的全局变量,全是windows属性。
?eg:var a=123;===>window.a=123;

  ②预编译

1.创建AO对象(执行期上下文 )//存储空间安库2.找形参和变量声明,将变量和形参作为AO属性名,值为undefind3.将实参和形参统一,4.在函数体里面找函数声明,值赋予函数体
例一:AO{ ???a:1, ???b:undefind, ???d:undefind}function a(){ ???console.log(a);//2 ???var a; ???a=123; ???console.log(a); ???var b=function(){ ???}
???function a(){} ???var c=234; ???console.log(b) ???console.log(c) ???}
AO:{ ???a:undefind =>2=>function a(){}=>123
 ???b:undefind,
???c:undefind=>234
}
a(2); //总结:1、预编译发生在函数执行的前一刻 2、解决函数执行顺序问题 函数声明整体提升,变量提升 
例二:
function test(a,b){
  console.log(a);
???c=0;
???var c; ?
???a=3;
???b=2;
???console.log(b);
???function b(){}
???function d(){}
???console.log(b)
}
AO:{
   a:3;
????b:2;
????c:0;
????d:function(){}
}
test(1);

js预编译

原文地址:https://www.cnblogs.com/resist/p/9183178.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved