一.JavaScript 流程控制
-
顺序流程控制
-
分支流程控制
if语句:
- if单分支语句
- if else双分支语句
- if else if多分支语句
三元表达式: 条件表达式 ? 表达式1 : 表达式2
switch语句:多分支语句,用于多选一0
-
循环流程控制
- for循环
- while循环
- do...while循环:至少会执行一次循环体
continue关键字:退出当前次的循环,但是还会继续下一次循环
break关键字:用于立即跳出整个循环(循环结束)
二.JavaScript 数组
1.利用new创建数组
2.利用数组字面量创建数组
获取数组元素: 数组名[索引号]
索引(下标):从0开始,可以通过索引来获取数组元素
遍历数组:把数组元素从头到尾访问一次
数组长度: 数组名.length 能够动态监测数组元素的个数
数组新增元素:
- 修改length长度来实现数组扩容(length属性是可以读写的)
- 修改数组索引的方法(直接给出索引号,追加数组元素)
三.JavaScript 函数
1.声明函数: function
2.调用函数:
3.实参和形参的匹配问题:
return只能返回一个值,当有多个值的时候会返回最后一个值
没有return,则返回undefined
4.arguments对象:
存储了传递的所有的实参
函数可以调用另外一个函数(函数可以相互调用)
函数的两种的声明方式:
1.利用函数关键字自定义函数(命名函数)
2.函数表达式
四.JavaScript作用域
目的是减少命名冲突
- 全局作用域:整个script标签 或者是一个单独的js文件
- 局部作用域:在函数内部就是局部作用域 这个代码的名字只在函数内部起效果和作业
- 全局变量:在全局作用域下的变量
- 局部变量:在局部作用域下的变量
注意:函数的形参也可以看作是局部变量
全局变量只有浏览器关闭的时候才会销毁,比较占内存资源
作用域链:内部函数访问外部函数的变量,采取的是链式查找的方式来决定取哪个值,这种结构我们称为作用域链 (就近原则)
五.JavaScript预解析
- 预解析: js引擎会把js 里面所有的 var 还有 function 提升到当前作用域的最前面
- 代码执行: 按照代码书写的顺序从上往下执行
预解析分为 变量预解析 与 函数预解析
- 变量预解析: 就是把所有的变量声明提升到当前的作用域最前面 不提升赋值操作
- 函数预解析: 就是把所有的函数声明提升到作用域最前面 不调用函数
函数表达式调用必须写在函数表达式下面