前端技术的发展变化太快了,各种各样的框架。再变也离不开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:指向函数 }
函数:
时间: 2024-10-04 19:13:16