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 ...
随机推荐
- hdoj 1596 find the safest road【最短路变形,求最大安全系数】
find the safest road Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
- matlab初学者_脚本文件调用函数文件
问题: matlab里面有两种文件,一种是脚本文件,一种是函数文件,为了模块化程序,我们需要把专门的功能写成一个函数封装到某个函数文件里面. 那么来看如何在脚本文件里调用函数文件中的函数. 注意点: ...
- 平时Error记录
The Windows Firewall on this machine is currently 1.This row already belongs to another table. DataT ...
- UVa1572 UVaLive6393 Self-Assembly
填坑系列(p.172) 注意“可以旋转和翻转” 然后将每个字母看成点 不然边数就是n^2级的 #include<cstdio> #include<cstring> #inclu ...
- Mina学习之与Spring整合
本章中演示在Spring中整合Mina,为了整合到Spring,需要做以下几个步骤: 1. 设置IoHandler <bean id="trapHandler" class= ...
- 【设计模式 - 6】之桥接模式(Bridge)
1 模式简介 举个例子,人.车和公路是三个维度,人开着车在公路上行驶,就是将这三个维度进行了关联.人分男人(Man)和女人(Woman),车分小轿车(Car)和公共汽车(Bus),公路分市区 ...
- Java堆栈详解 .
1. Java中堆栈(stack)和堆(heap) (1)内存分配的策略 按照编译原理的观点,程序运行时的内存分配有三种策略,分别是静态的,栈式的,和堆式的. 静态存储分配是指在编译时就能确定每个数据 ...
- LINUX 内核调试基础+编程基础
http://blog.chinaunix.net/uid-20564848-id-73208.html 内核文档:[root@localhost Documentation]# pwd /usr/s ...
- Restart-ServiceEx.psm1
详细描述 利用WMI的Win32_Service类重启指定计算机上的服务. Restart-ServiceEx cmdlet 通过WMI的Win32_Service类向指定计算机(ComputerNa ...
- SQL:42601
以前遇到SQL中触发器的问题, 添加一个字段后,发现以前的程序的SQL报错 看了下表定义,有这样的一行代码 CREATE TRIGGER chintai_keiyaku_audit AFTER INS ...