# 流程语句 - 知识点一、[循环语句](#one) - 知识点二、[跳转语句](#two) - 知识点三、[选择语句](#three) - 知识点四、[异常处理语句](#four) - [面试题](#footer) ## 知识点一、循环语句: - **while** - 语法 while (条件表达式) { //循环执行代码段 } - 流程 - 1、判断条件表达式的值 - 2、当值为true时循环执行代码段 - 3、当值为false时退出循环体 - 特性 - 先检查条件,再执行循环体 - 条件不满足则循环一次也不执行 - 时机 - 一个动作被重复执行到满足某个条件时 - **do-while** - 语法 do { //代码执行主体 } while (条件表达式); - 流程 - 1、先执行循环体内代码再进行判断 - 2、如果表达式的值为true,则重复执行代码段 - 3、如果表达式的值为false,则退出循环体 - 特性 - 先执行循环体,再进行条件判断 - 循环体内代码至少执行一次 - 时机 - 希望一个动作至少被执行依次时 - **for** - 特性 - for(循环变量=初值;循环条件;递增/递减计数器){循环代码段}; for (var i = 0; i < array.length; i++) { array[i] //代码执行的主体 } - 注意for循环length的优化; - 流程 - 1、用循环变量初始值与循环条件相比较,确定返回值 - 2、如果返回值为true则执行循环体 - 3、执行完一次后进行递增/递减运算 - 4、将运算结果与循环条件相比较 - 5、如果返回值还是true则继续执行循环体;如果返回值为false则退出循环体; - 时机 - 重复一个动作到一定次数时; - for-in - 语法 - for(声明变量in对象){代码段} for (var variable in object) { if (object.hasOwnProperty(variable)) { //代码执行主体 } } - 作用:枚举对象属性 **注意事项** - 1、循环输出的属性顺序不可预知 - 2、对象的值不能是null或者undefined; **[↑ 返回目录](#zero)** ## 知识点二、跳转语句; - return:终止函数体的运行,并返回一个值 - break:终止整个循环,不再进行判断 - continue:结束本次循环,接着去判断是否执行下次循环; **[↑ 返回目录](#zero)** ## 知识点三、选择语句; > 选择语句,有三个,if和switch、?:三目运算符 **if** - 句法 if(条件表达式1){ 代码段1 }else if(条件表达式2){ 代码段2 }else{ 代码段3 } - 流程 - 1、判断条件1,如果返回值为true则执行代码段1 - 2、如果条件1的返回值为false,则跳过语句块1并检测条件2 - 3、如果所有表达式的值均为false则执行else后面的语句(else的这个语句为非必须的,可以不写) - 特性 - 结果复杂可嵌套 - 可检测度哟个条件表达式 - 表达式的值具有线性特征 - 表达式的值的动态的 - 适用于任意类型的数据 - 可处理复杂的逻辑关系(代码的逼格低,多重判断可用swith case代替) **switch** - 句法 switch(条件表达式){ case 标签1: 代码段1 break; …… Default: []() 代码段n; } - 流程 - 1、计算表达式的值,并与各标签相比较 - 2、若找到与之匹配的标签,则执行其后面的代码段 - 3、弱没有照东啊与之匹配的标签,则直接执行default之后的代码段(default是非必须的) - 格式 - case标签为常量,可以是字符串或数字 - 每个标签均为冒号:结束 - 虽然break与default为可选项,但为了逻辑清晰最好不要省略 - case标签的值必须和条件表达式的值完全匹配 - 特性 - 结构简介,转为多重选择设计 - 仅可测试一条条件表达式 - 表达式的值具有离散型 - 表达式的值是固定的,不会动态变化的 - 仅能应用整数,枚举,字符串等类型数据 - 仅能处理多个枚举型逻辑关系 **[↑ 返回目录](#zero)** ## 知识点四、异常处理语句; - throw:主动抛出异常 - try:指明需要处理的代码段 - catch:捕获异常 - finally:后期处理,无论出不出错都会执行; **[↑ 返回目录](#zero)** ## 面试题: - for循环和while循环的转化; - return/continue/break的区别 - 说说写JavaScript的基本规范?书写规范; - 变量的首字母不能是数字,其它字母可以是字母、数字、下划线 - 不能用关键字和保留字作为变量的名字; - 使用驼峰命名法来书写变量后续需要用到的变量,可以先赋值为null; - 使用匈牙利命名法来书写明确知道变量名字;让别人一眼看出什么变量类型; - 借用变量的时候;变量最后不用时候置为null; 经典的总结: 1. 不要在同一行声明多个变量。 2. 请使用 ===/!==来比较true/false或者数值 3. 使用对象字面量替代new Array这种形式 4. 不要使用全局函数。 5. switch语句必须带有default分支 6. 函数不应该有时候有返回值,有时候没有返回值。 7. for循环必须使用大括号 8. if语句必须使用大括号 9. for-in循环中的变量 应该使用var关键字明确限定作用域,从而避免作用域污染。