JavaScript解析机制
JavaScript是一种解释型语言,按照<script>块儿来预编译和执行。
JavaScript解释器在预编译阶段,先预声明变量,再预声明函数。在执行阶段,进行变量赋值,和函数执行。
示例1:
预编译阶段,对于变量只进行预声明,并初始化值为undefined,在执行阶段才真正进行赋值。
alert(variableA); //undefined
var variableA = 2;
alert(variableA); // alert(funcA); //function funcA(){alert('I am funcA.')}
funcA(); //I am funcA.
function funcA(){
alert('I am funcA.');
}
示例2:
预编译预条件无关!
alert(variableA); //undefined
alert(funcA); //function funcA(){alert('I am funcA.')}
funcA(); //I am funcA if(true){
var variableA = 2; }else{
function funcA(){
alert('I am funcA.');
}
}
alert(variableA); //
示例3:
JavaScript按照<script>代码块来预编译!
<script>
funcA(); //I am funcA too.
function funcA(){
alert('I am funcA.');
}
function funcA(){
alert('I am funcA too.');
}
</script>
<script>
funcA(); //I am funcA.
function funcA() {
alert('I am funcA.');
}
</script>
<script>
funcA(); //I am funcA too.
function funcA() {
alert('I am funcA too.');
}
</script>
示例4:
先预声明变量,再预声明函数,因此,预编译阶段variableA函数覆盖了variableA变量。在执行阶段,variableA变量被赋值为2,
alert(variableA); //function variableA(){alert('I am variableA.')}
var variableA = 2;
function variableA(){
alert('I am variableA.');
}
alert(variableA); //
alert(variableA); //function variableA(){alert('I am variableA.')}
function variableA(){
alert('I am variableA.');
}
var variableA = 2; alert(variableA); //
示例5:
alert(variableA); //undefined
var variableA = function(){
alert('I am variableA.');
}
alert(variableA); //function variableA(){alert('I am variableA.')}
alert(variableA); //undefined
var variableA = function variableA(){
alert('I am variableA.');
} alert(variableA); //function variableA(){alert('I am variableA.')}
示例6:
函数默认返回值为undefined
var variableA = funcA(2);
function funcA(num){
num = num + 1;
} alert(variableA); //undefined
JavaScript解析机制的更多相关文章
- javascript解析机制——预解析
JavaScript解析机制是什么? JavaScript解析过程分为两个阶段,一个是编译阶段,另外一个就是执行阶段. * 编译阶段 编译阶段就是我们常说的JavaScript预解析( ...
- javascript解析机制、闭包详解
js解析机制: js代码解析之前会创建一个如下的词法环境对象(仓库):LexicalEnvironment{ } 在扫描js代码时会把: 1.用声明的方式创建的函数的名字: 2.用var定义的变量的名 ...
- JavaScript解析机制与闭包原理实例详解
js代码解析机制: js代码解析之前会创建一个如下的词法环境对象(仓库):LexicalEnvironment{ } 在扫描js代码时会把: 1.用声明的方式创建的函数的名字; 2.用var定义的变量 ...
- JavaScript解析机制之变量提升
1.什么是预解析? 在当前作用域下,JS 运行之前,会把带有 var 和 function 关键字的事先声明,并在内存中安排好.(这个过程也可以理解为变量提升)然后再从上到下执行 JS 语句(预解析只 ...
- 轻松搞定javascript变量(闭包,预解析机制,变量在内存的分配 )
变量: 存储数据的容器 1.声明 var 2.作用域 全局变量. 局部变量. 闭包(相对的全局变量): 3.类型 a.基本类型(undefi ...
- 从var func=function 和 function func()区别谈Javascript的预解析机制
var func=function 和 function func()在意义上没有任何不同,但其解释优先级不同:后者会先于同一语句级的其他语句. 即: { var k = xx(); function ...
- JavaScript 预解析机制
首先我们来看一段代码: <script> console.log(a); var a = 10; </script> 此时运行结果为 为什么会显示undefined呢?这就 ...
- 进击JavaScript核心 --- (2)函数和预解析机制
一.函数 每个函数都是 Function类型的实例,也具有属性和方法.由于函数也是一个对象,因此函数名实际上也是一个指向函数对象的指针,不会与某个函数绑定 1.函数的定义方式 (1).函数声明 fun ...
- javascript运行机制
太久没更新博客了,Javascript运行机制 Record it 1.代码块 JavaScript中的代码块是指由<script>标签分割的代码段.例如: <script type ...
随机推荐
- java 检查是否是数组 检查是否是空数组 检查数组是否包含某个元素
/** * Determine whether the given object is an array: * either an Object array or a primitive array. ...
- Tomcat8 配置NIO
conf/server.xml 打开:<Executor name="tomcatThreadPool" namePrefix="catalina-exec-&qu ...
- Maven浅析-1
Maven的配置 1.首先从http://maven.apache.org/download.cgi下载当前最新版本的maven. 如果不想自己安装maven的话,建议直接下binary zip文件, ...
- Android中的主题Theme
系统自带的Theme: android以及为我们定义好了一些theme,需要是我们直接可以拿来使用. 常用的Theme通常如下: android:theme="@android:style ...
- 【译】Android应用架构
Android开发生态圈的节奏非常之快.每周都会有新的工具诞生,类库的更新,博客的发表以及技术探讨.如果你外出度假一个月,当你回来的时候可能已经发布了新版本的Support Library或者Play ...
- Oracle --1536错误解决(超出表空间)
--导入数据库时提示 超出表空间限额,1536错误,解决方法:去除限额. 执行:--alter user username quota unlimited on users; 例: alter use ...
- 什么是html,什么是php
学了这么长时间的网站建设,好像对这两个概念说以来还是语无伦次的,所以就来写一写了.html是什么呢,官方解释:超文本标记语言,超文本就是指页面可以包含图片,连接等非文字元素.超文本标记语言也是一种规范 ...
- Android-自定义多TAB悬浮控件实现蘑菇街首页效果
因为项目的一些需求需要用到此种展现方式. 找了市面上大部分有类似功能的应用. 基本思路嵌套ScrollView 转换事件分发给listview 实现. 但是此种方案有个缺点. 在ScrollVie ...
- IsPostBack and DropdownList.
Encounted the issue accident when helping my classmate dealing with his homework assignment,it turns ...
- Visual C#实现Windows信使服务
现在有很多网络管理软件都具备网络上信息实时传送的功能,虽然有些网络通讯软件功能比较强大,有的软件不仅可以传送文本信息,还可以传送二进制文件等.但 它们都有一个无法克服的缺点,那就是分发比较困难,信息传 ...