前端技术的发展变化太快了,各种各样的框架。再变也离不开js。所以,在此把js的高级语法总结一遍。 js解析和执行包括:全局和函数
一:全局预处理
<script type="text/javascript">
var a=1;
function xx(){
alert(a);
}
</script>
这段代码会正常输出a=1;
<script type="text/javascript">
var a=1;
function xx(){
alert(a);
var a=5;
}
</script>
输出 undefined 为什么呢? 不报错 输出undefined 。 这就是js的解析执行过程
js执行过程分为:预处理的阶段和执行阶段
预处理阶段:
一:创建一个词法环境 LexicalEnvironment==window
二:扫面js代码:
1.用声明的方法创建的函数
2.用var 定义的变量
预处理js处理命名冲突:
先扫描函数声明后扫描变量(var声明)
处理函数声明有冲突会覆盖
处理变量声明有冲突,会忽略
下面为例子:
<script type="text/javascript">
alert(a); //undefined
alert(b); //报错
alert(f); //字符串的表达式
alert(g); //undefined
var a=5;
b=6;
alert(b);
function f(){
console.log(‘f‘);
}
//表达式创建的函数
var g=function(){
console.log(‘g‘);
}
alert(g);
</script>
js分为两个阶段:
一:预处理阶段 1.var 定义的变量 2.声明的方式创建的函数
window
{
f:指向函数
a:undefined
g:undefined (表达式创建的函数可以当成变量)
}
二:执行时 没有定义var 就一次性赋值
window
{
f:输出函数的值
a:5 变量的定义
b: 6 函数赋值
g:指向函数
}
函数:
原文:http://www.cnblogs.com/sunliyuan/p/5898355.html