JS之预编译

news/2024/7/3 8:38:45

今天有幸获得腾讯的电话面试,不幸的是面试非常惨,但是从中认识到自己的不足和找到日后该努力的方向,就拿面试中的关于js的预编译来说吧,小编都不知道是啥,面试完后赶紧查资料,写总结。

首先javascript是解释型语言,自然就是编译一行,执行一行。js运行过程分为三步:1、语法分析 2、预编译  3、解释执行

语法分析就是指js引擎去判断检查你的代码是否存在语法错误,解释执行更不用多说,自然就是执行你的代码,然而重中之重的是预编译,预编译简单理解就是在内存中开辟一些空间,存放一些变量与函数 ,那么到底预编译是在什么时候开始发生的呢?接下来就是本章的重点所在了。

理解预编译首先要明白函数声明和变量赋值:

function a(){ }//函数声明  

这种形式的写法是函数声明,即声明一个函数,脚本在执行之前会做预编译处理。 co

var a= function(){ }//变量赋值  

   这种写法是变量赋值,函数在js语言里也是一种数据,匿名函数作为变量赋值给定义的变量。这种形式在预编译处理阶段,只会给变量a分配一个内存空间,不会做初始化。初始化过程中会在执行时执行。

总结:

预编译(函数执行前)

1. 创建AO对象(Active Object) 
2. 查找函数形参及函数内变量声明,形参名及变量名作为AO对象的属性,值为undefined 
3. 实参形参相统一,实参值赋给形参 
4. 查找函数声明,函数名作为AO对象的属性,值为函数引用

预编译(脚本代码块script执行前) 

1. 查找全局变量声明(包括隐式全局变量声明,省略var声明),变量名作全局对象的属性,值为undefined 
3. 查找函数声明,函数名作为全局对象的属性,值为函数引用


***

预编译阶段发生变量声明和函数声明,没有初始化行为(赋值),匿名函数不参与预编译 ,只有在解释执行阶段才会进行变量初始化 。






http://www.niftyadmin.cn/n/4541431.html

相关文章

elasticsearch查询语句总结

query 和 filter 的区别请看:https://www.cnblogs.com/bainianminguo/articles/10396956.html Filter DSL term 过滤 term主要用于精确匹配哪些值,比如数字,日期,布尔值或 not_analyzed 的字符串(未经分析的文本数据类型)&#x…

java 8中map中compute,computeIfAbsent,computeIfPresent方法介绍

2019独角兽企业重金招聘Python工程师标准>>> compute&#xff08;计算&#xff09; default V compute(K key,BiFunction<? super K, ? super V, ? extends V> remappingFunction) 指定的key值在map中的value值进行操作&#xff0c; 如果key存在&#xff0…

JS之事件委托

前段时间去了慕课网面试前端开发&#xff0c;面试官当时问了我一个关于事件委托的问题&#xff0c;当时一脸蒙逼&#xff0c;心里在想什么鬼&#xff0c;好像都没听过啊&#xff0c;后来回来后赶紧查了一下资料&#xff0c;才知道原来事件委托是js中的经典问题啊&#xff0c;当…

理解 Redis(9) - Publish Subscribe 消息订阅

在窗口1开通一个名为 redis 的通道: 127.0.0.1:6379> SUBSCRIBE redis Reading messages... (press Ctrl-C to quit) 1) "subscribe" 2) "redis" 3) (integer) 1 从窗口2传入信息: 127.0.0.1:6379> PUBLISH redis hi (integer) 1 此时窗口1会收到这…

前端挑战之js编程题(1)

题目要求&#xff1a; 查找两个节点的最近的一个共同的父节点&#xff0c;可以包括节点自身。 思路&#xff1a; 看到题目要求&#xff0c;首先应该想到有三种情况&#xff0c;有两个节点&#xff0c;dom1和dom2&#xff1a; 1、dom1为dom2的最近父节点&#xff0c;判断dom1是否…

PDF文件怎么拆分,PDF拆分技巧

PDF文件怎么拆分呢&#xff1f;现在的PDF文件都会有很多页面&#xff0c;我们想要将这个页面拆分成单个的PDF文件改怎么操作呢&#xff1f;不要着急&#xff0c;下面小编就使用迅捷PDF编辑器为大家分享一下PDF拆分的技巧。  使用软件&#xff1a;迅捷PDF编辑器  软件的操作…

前端挑战之js编程题(2)

题目要求&#xff1a; 实现对一个现有的数组去除重复元素&#xff0c;并返回去除重复元素的数组。 方案&#xff1a; var arr1[1,2,3,1,4,5,3,6] arr2[] for(var i0,lenarr1.length;i<len;i){ if(arr2.indexOf(arr[i])<0){ arr2.push(arr[i]); } } console.log(arr2); 题…

带你简单了解通信工程

通信工程&#xff0c;是电子工程的一个重要分支&#xff0c;也是电子信息类子专业&#xff0c;更是一门重要的基础学科。很多学校也有别的叫法&#xff0c;例如电子通信工程、电信工程等。电子工程&#xff0c;也就是俗称的EE&#xff0c;Electronic Engineering。理论上来说&a…