学习 JavaScript (五)核心概念:语句
语句
语句被称作是流控制语句,通常有标志性的一个或者多个关键字,if 、 do-while、 while、for、 for-in、 label、 break、continue、with、switch。
if 语句
if 语句就是我们常说的条件语句,在条件满足的情况下,执行一段代码,条件不满足就不执行,if...else...。
if ('条件'){
代码块 1
}else{
代码块 2
}
看下面的示例:
if (i>25){
alert ('i 大于 25')
} else {
alert ('i 小于或等于 25')
}
代码块可以不用 {} 包着,但是使用会让代码更清晰。也可以增加多个条件, if...else if...else...:
if (i>25){
alert('i 大于 25')
} else if(i=25) {
alert('i 等于 25')
} else {
alert('i 小于 25')
}
do-while 语句
do-while 语句是一种后测试循环语句,也就是说,不管条件成不成立,先执行一遍代码。形式如下:
do {
代码块 // 这里的代码肯定会被执行一次
} while (条件)
while 语句
while 语句是一种前测试循环语句,这个语句的用法和 if 一致,先判断条件再执行代码。
while(条件){
代码块;// 只有条件满足才会被执行
}
for 语句
for 语句也是一个前测试循环语句,在循环执行之前初始化变量和定义循环后要执行的代码的能力。比如:
for(初始化变量;约束条件;后置操作符){
代码块
}
// 举一个例子
for(let i = 0; i < 10; i++){
alert(i)
}
三个表达式都是可以选的,如果全部为空则代码块部分会无限循环下去。
for-in
for-in 语句是一种精准的迭代语句,一个典型的用法就是枚举对象的属性。比如:
for (let item in object){
代码块
}
其中 let 可以省略,写上会好一些。
label 语句
label 的作用就是给代码做一个标记,一遍我们在接下来的代码中引用,经常和 for 循环语句联合使用,下面会有示例。比如:
start: for(let i = 0; i < 10; i++){
alert(i)
}
break 和 continue 语句
按照我自己的理解,break 语句会让代码中途彻底退出,请看示例:
let a = 0;
for (let i = 1; i < 10; i++){
if(i % 5 == 0){
break;
}
a++;
}
alert(a); // 结果是 4
i 的初始值为 1 ,在 i == 5 的时候,程序跳出循环,执行 alert()
continue 会让代码跳过满足条件的那一次循环,示例在这儿:
let a = 0;
for (let i = 1; i < 10; i++){
if(i % 5 == 0){
continue;
}
a++;
}
alert(a); // 结果是 8
i 的初始值为 1 ,在 i == 5 和 i == 10 的时候,程序各跳出循环一次,所以结果是 8
和 label 语句连用的时候可以改变循环的次数,一般是在嵌套循环中使用的,其中和 break 连用可以穿透多层循环,和 continue 连用只能穿透内层循环。
let a = 0;
outer:for (let i = 0; i < 10; i++){
for (let j = 0; i < 10; j++){
if (i == 5 && j == 5){
break outer;
}
a++;
}
}
alert(a); // 55
当 i == 0,1,2,3,4, j 从 0 执行到 9;
当 i == 5,j 从 0 执行到 4
随后两个循环停止
如果 label 语句遇到 continue ,则是这样:
let a = 0;
outer:for (let i = 0; i < 10; i++){
for (let j = 0; i < 10; j++){
if (i == 5 && j == 5){
continue outer;
}
a++;
}
}
alert(a); // 95
当 j == 5 ,最里面的循环停止一次,外层的循环继续执行。所以,i 能从 0 执行到 9。
with 语句
不经常使用这个语句,严格模式下不被允许使用,大型应用的时候不建议使用。
switch 语句
switch 的语法和 C 语言的语法类似,如下所示:
switch (表达式){
case value :
代码块;
break;
case value :
代码块;
break;
case value :
代码块;
break;
case value :
代码块;
break;
default:
代码块;
}
上面代码的含义就是如果表达式的值是其中一个 case,就执行相应的代码块。如果所有 case 的 value 都不满足要求,则执行 default 下面的代码块。
switch (i){
case 1 :
alert(i);
break;
case 2 :
alert(i);
break;
case 3 :
alert(i);
break;
default:
alert(i);
}
可以看得出来,switch 语句就是 if...else if...else 的简写。
如果不写 break 语句,就是合并两个 case,此时尽量做好注释,说明这不是一个低级错误。
在 JavaScript 中 switch 有一个比较有重要的特性: case 的值不一定是产量,可以是变量,甚至是表达式。这也是其他语言所不具备的:
let a = 25;
switch (true){
case a < 0 :
alert("a 小于 0");
break;
case a > 0 :
alert("a 大于 0");
break;
case a == 0 :
alert("a 等于 0");
break;
default:
alert("a 不是实数");
}
这里 case 返回的是布尔值,返回的是 true 则执行相应的代码块。
注意,switch 比较值的过程中是严格比较,即数字字符串和数字不相等。
欢迎大家关注微信公众号:** 可视化技术( visteacher )**
不仅有前端和可视化,还有算法、源码分析、书籍相送
各个分享平台的 KurryLuo 都是在下。
用心学习,认真生活,努力工作!
学习 JavaScript (五)核心概念:语句的更多相关文章
- Go语言学习笔记五: 条件语句
Go语言学习笔记五: 条件语句 if语句 if 布尔表达式 { /* 在布尔表达式为 true 时执行 */ } 竟然没有括号,和python很像.但是有大括号,与python又不一样. 例子: pa ...
- 使用Firebug或chrome-devToolBar深入学习javascript语言核心
使用Firebug和chrome-devToolBar调试页面样式或脚本是前端开发每天必做之事.这个开发神器到底能给我们带来哪些更神奇的帮助呢?这几天看的一些资料中给了我启发,能不通过Firebug和 ...
- webpack学习2.3webpack核心概念
核心概念(四个) Entry(入口) Output(出口) Loaders()来处理其他类型的资源文件 Plugins(插件) 1.入口(Entry) 作用:代码的入口,打包的入口,单个或多个, 示例 ...
- Elasticsearch学习之基本核心概念
在Elasticsearch中有许多术语和概念 1. 核心概念 Elasticsearch集群可以包含多个索引(indices)(数据库),每一个索引可以包含多个类型(types)(表),每一个类型包 ...
- Docker 学习笔记之 核心概念
Docker核心概念: Docker Daemon Docker Container Docker Registry Docker Client 通过rest API 和Docker Daemon进程 ...
- Python 学习 第五篇:语句和语法
Python程序是语句构成的,语句包含表达式,表达式嵌套在语句中,包含变量和常量,用于处理对象.Python的语法实质上是由表达式.语句和代码块构成的.语句是由表达式构成的,代码块是由多个语句构成的复 ...
- 学习 JavaScript (四)核心概念:操作符
JavaScript 的核心概念主要由语法.变量.数据类型.操作符.语句.函数组成,前面三个上一篇文章已经讲解完了.后面三个内容超级多,这篇文章主要讲解的是操作符. 操作符 什么叫做操作符? 这是一种 ...
- 学习 JavaScript (三)核心概念:语法、变量、数据类型
JavaScript 的核心概念主要由语法.变量.数据类型.操作符.语句.函数组成,这篇文章主要讲解的是前面三个,后面三个下一篇文章再讲解. 01 语法 熟悉 JavaScript 历史的人应该都知道 ...
- 如何正确学习JavaScript
不要这样学习JavaScript 不要一开始就埋头在成堆的JavaScript在线教程里 ,这是最糟糕的学习方法.或许在看过无数个教程后会有点成效,但这样不分层次结构地学习一个东西实在是十分低效,在实 ...
- 「译」如何正确学习JavaScript
原文:How to Learn JavaScript Properly 目录 不要这样学习JavaScript 本课程资源 1-2周(简介,数据类型,表达式和操作符) 3~4周(对象,数组,函数,DO ...
随机推荐
- Java注解处理器--编译时处理的注解
1. 一些基本概念 在开始之前,我们需要声明一件重要的事情是:我们不是在讨论在运行时通过反射机制运行处理的注解,而是在讨论在编译时处理的注解.注解处理器是 javac 自带的一个工具,用来在编译时期扫 ...
- Intellij-Idea Maven SSH项目的搭建
添加阿里云镜像 在.m2/settings.xml中, <mirror> <id>nexus-aliyun</id> <name>Nexus aliyu ...
- 前端开发APP,从HBuilder开始~ 【转】
内容简介 介绍目前前端人员开发app的几种方法,具体介绍hbuilder开发app,一扇赞新的大门~ 无所不能的js 最开始js仅仅局限于网页上一些效果,操作网页内容等, 但是nodejs把js带入了 ...
- 获取linux帮助命令
命令的分类 linux的命令分为内部命令和外部命令. 内部命令指的是shell程序自带的命令,是shell程序的一部分,这些命令由shell程序识别并在shell程序内部完成运行,通常在linux系 ...
- Flask构建微电影(一)
第一章.项目介绍 1.1.前言 本教程我将带领大家如何使用flask框架开发微电影网站.Flask是python中最受欢迎的轻量级web框架,flask扩展丰富,冗余度小,可自由选择组合各种插 ...
- python2.7 的中文编码处理,解决UnicodeEncodeError: 'ascii' codec can't encode character 问题
最近业务中需要用 Python 写一些脚本.尽管脚本的交互只是命令行 + 日志输出,但是为了让界面友好些,我还是决定用中文输出日志信息. 很快,我就遇到了异常: UnicodeEncodeError: ...
- python字符串基本编码
综述:python中字符串分为字节字符和非字节字符python3中默认输入字符串以非字节字符编码,使用unicode字符集表示,可以使用encode方法转化为ascii,utf-8, utf-16等各 ...
- CF泛做
CF Rd478 Div2 A Aramic script 题意:给定几个字符串,去重后,求种类 思路:直接map乱搞 #include<bits/stdc++.h> using name ...
- Backbone.js 和 Nodejs 的一些共同点搞不清楚
前端方面 我用 Backbone.js 做过前端的开发,印象里就是后端按模型对象的属性把 JSON 数据发过来,我写在模板里渲染就好了 模板加载( underscore.js ) 建立模型 渲染视图 ...
- web前端 DOM 详解
先来点概念 文档对象模型(DOM)是一个独立于语言的,使用 XML 和 HTML 文档操作的应用程序接口(API). 在浏览器中,主要与 HTML 文档打交道,在网页应用中检索 XML 文档也很常见. ...