内容
---语法
---数据类型 上一小节
---流程控制语句 本小节
---理解函数

语句
--ECMA-262规定了一组语句,也称流程控制语句

if语句
-- 条件可以是任意表达式,
-- ECMAScript会自动调用Boolean()转化结果为一个布尔值
-- 推荐始终使用代码块,即使只有一行代码

if(condition) {
statement1;
} else if () {
statement2;
} else {
statement3;
}

do-while语句
--后测试循环语句
--在对条件表达式求值之前,循环体中的代码至少会被执行一次

do {
statement;
} while (expression);

while 语句
--前测试循环语句
--在循环体代买执行之前,就会对出口条件求值

while(expression) {
statement;
}

for 语句
--前侧循环语句
--具有,执行循环之前初始化变量和定义循环后要执行代码的能力

for(initialization; expression; post-loop-expression) {
statement;
}

--for与while相同,while循环做不到的,for循环也做不到
--在for循环的变量初始化表达式中声明的变量,和在外部声明是一样的
--因为ECMACScript不存在块级作用域(es6的let声明 是块级,之前没有)
--因此在循环内部定义的变量外部也可以访问

for-in语句
--一种精准的迭代语句
--用来枚举对象的属性

for(property in expression) {
statement;
}

举例

for(var propName in window) {
console.log(propName);
}

--使用for-in循环了BOM中window对象的所有属性
--与for语句类似,var也不是必须的
--但是我们推荐使用局部变量
--ECMAScript对象的属性是没有顺序的,
--所以遍历的顺序是不可预测的
--如果要迭代的对象为null或者undefined,会抛出错误
--es5更改了这一行为,变成不执行循环体
--建议在for-in之前检查对象不是null或者undefined 为了兼容

label语句
--在代码中添加标签,以便将来使用

label:statement;

例如

start:for(var i=0;i<10;i++) {
console.log(i);
}

--start标签可以由break或者continue语句引用

--加标签的语句一般都与for等循环语句配合使用

break和continue语句
--用于在循环中精准的控制代码的执行
--break语句会立即跳出循环,执行循环之后的代码
--continue会立即跳出本次循环,从循坏开始继续执行

var num = 0;
for(var i=1;i<10;i++) {
if(i%5 == 0) {
break;
}
num++;
}
num; //

--当i=5时,num=4,i%5 ==0 成立跳出循环

--循环了5次,第五次提前跳出循环,没有执行num++

var num = 0;
for(var i=1;i<10;i++) {
if(i%5 == 0) {
continue;
}
num++;
}
num; //

--当i=5时,num=4,i%5 ==0 成立跳出本次

--总共9次,i=5时,提前跳出本次循环,没有执行num++

--break和continue语句都可以和label语句联合使用,
--多发生在循环嵌套的情况下,break或者continue指定循环体

start:
for(let i=0;i<5;i++) {
for(let j=0;j<5;j++) {
if(j==3) {
continue start;
//break start;
}
console.log(i+"-"+j);
}
}

--当条件成立跳出label指定循环结构
--continue start; j==3时,直接跳出本次并标出本层循环,从下一个i开始
--所以不会有j=4
--break start; j==3时,直接跳出这两层循环体
--所以不会有i=1 以及之后

with语句
--将代码的作用域设置到一个指定的对象中

with(expression) {
statement;
}

--用于简化多次编写同一对象的工作

var qs = location.search.substring(1);
var hostName = location.hostname;
var url = location.href;

--上面的代码都包含location对象,用with可以

with(location) {
var qs = search.substring(1);
var hostName = hostname;
var url = href;
}

--with语句关联了location对象,在with语句代码块中
--每个变量首先被认为是局部变量,如果在局部环境中找不到该变量的定义
--就会查询location对象中是否有同名属性,有,则以此为变量的值

--严格模式下不允许使用with语句,with语句会导致性能下降
--也给调试代码造成困难
--因此在开发大型应用程序时,不建议使用with

switch语句
--case 用于匹配值,并执行其中的语句(if)
--default 用于不匹配时,执行的语句(else)
--break用于跳出switch,
--不写则会在执行完当前case之后,不用判断继续执行下面的代码块中的代码
--ECMAScript中的switch 可以接受任何数据类型
--switch语句中的比较使用的是全等,所以 10 不等于 "10"

var a = "C"
switch(a) {
case "A":
console.log("this is A");
break;
case "B":
case "C":
console.log("this is B or C");
break;
default:
console.log("other");
}

《JavaScript高级程序设计》读书笔记(三)基本概念第五小节流程控制语句的更多相关文章

  1. 《javascript高级程序设计》笔记三

    第三章 基本概念 任何语言的核心必然会描述这门语言最基本的工作原理.这部分内容对我们来说,读起来很乏味,甚至会产生困意,但这部分内容却是重要的!我有幸拜读<JavaScript高级程序设计> ...

  2. javascript高级程序设计读书笔记-事件(一)

    读书笔记,写的很乱   事件处理程序   事件处理程序分为三种: 1.html事件2. DOM0级,3,DOM2级别  没有DOM1 同样的事件 DOM0会顶掉html事件   因为他们都是属性  而 ...

  3. Javascript高级程序设计读书笔记(第三章)

    第3章 基本概念 3.4 数据类型 5种简单数据类型:undefined.boolean.number.null.string. typeof操作符,能返回下列某个字符串:“undefined”.“b ...

  4. 《JavaScript高级程序设计》笔记:基本概念(三)

    数据类型 ECMAScript中有5种简单数据类型(也称为基本数据类型):undefined,null,boolean,number和string. typeof typeof null会返回“obj ...

  5. javascript高级程序设计读书笔记

    第2章  在html中使用javascript 一般都会把js引用文件放在</body>前面,而不是放在<head>里, 目的是最后读取js文件以提高网页载入速度. 引用js文 ...

  6. JavaScript高级程序设计 读书笔记

    第一章 JavaScript 简介 第二章 Html中使用JavaScript 第三章 基本概念 第四章 变量,作用域,内存 第五章 引用类型 第六章 面向对象 第七章 函数表达式 第八章 BOM 第 ...

  7. JavaScript高级程序设计-读书笔记(6)

    第20章 JSON JSON是一个轻量级的数据格式,可以简化表示复杂数据结构的工作量 JSON的语法可以表示一下三种类型的值 l        简单值:使用与JavaScript相同的语法,可以在JS ...

  8. JavaScript高级程序设计-读书笔记(1)

    第1章 JavaScript简介 JavaScript是一种专为与网页交互而设计的脚本语言,由下列三个不同的部分组成: l        ECMAScript:提供核心语言功能: l        文 ...

  9. javascript高级程序设计 读书笔记1

    第二章  在HTML中使用JS 加载JS有三种:行内,head头部和外部链接JS   最好使用外部链接<script src="example.js" ></sc ...

随机推荐

  1. 使用BeautifulSoup爬取汽车之家新闻

    1 先select到改数据上层的标签,取第一个[0],然后attrs获取单标签里面的内容,或者get_text获取成对标签内文本2 find就是明确了标签之后,是唯一的,就可以使用find(标签名). ...

  2. 什么是nuget?nuget包是如何管理

    本文链接:https://blog.csdn.net/Microsoft_Mao/article/details/101159800做windows开发的,迟早会接触到nuget这个东西,那么今天我们 ...

  3. 使用 navigator.sendBeacon() 上报数据

    http://kaifage.com/notes/76/navigator-sendBeacon.html 如某些统计系统,在页面unload时,如果要上报当前数据,采用xhr的同步上报方式,会阻塞当 ...

  4. ABB工业机器人(条件执行数字信号判断,画方or画圆)

    一.前戏 条件:从安全点,到工具区域夹取工具(笔),到工作区域,判断数字信号 Di1 =1 ,Ture :画方,False:画圆,回到工具区域放下工具(笔),回到安全点 二. 准备工作 校准tcp工具 ...

  5. Pandas数据结构(一)——Pandas Series

    Pandas 是 Python 中基于Numpy构建的数据操纵和分析软件包,包含使数据分析工作变得快速简洁的高级数据结构和操作工具.通过Pandas Series 和 Pandas DataFrame ...

  6. Python requests库模拟浏览器行为的一些技巧记录

    如下都是一些经验之谈,不定期更新,喜欢可以关注哦. 忽略ssl报错 一些证书问题会导致程序报错,解决方法为在发送请求的时候,带上verify=False参数即可: result = requests. ...

  7. appium---如何判断原生页面和H5页面

    目前app中存在越来越多的H5页面了,对于一些做app自动化的测试来说,要求也越来越高,自动化不仅仅要支持原生页面,也要可以H5中进行操作自动化,这一篇介绍如何查看页面上是否存在H5页面,这里首先要了 ...

  8. golang采坑记录

    安装golang,引入第三方库,采坑 1.获取安装包 go语言中文网:https://studygolang.com/dl 官网地址:https://studygolang.com/dl 2.下载 选 ...

  9. 3.CRUD(增删改查)

    Select 选择,查询语句 id:就是对应的namespace中的方法名: resultType:Sql语句执行的返回值: parameterType:参数类型 我们想使用查询语句首先要在UserM ...

  10. php 移动操作数组函数

    下面的几个主要是移动数组指针和压入弹出数组元素的和个函数. 函数 功能 array_shift 弹出数组中的第一个元素 array_unshift 在数组的开始处压入元素 array_push 向数组 ...