一篇文章带你了解JavaScript-语句

目录
  • 表达式语句
  • 复合语句和空语句
    • 复合语句
    • 空语句
  • 声明语句
    • var
    • function
  • 条件语句
    • if
    • if/else
    • else if
    • switch
  • 循环
    • while
    • do/while
    • for
    • for/in
  • 跳转
    • 标签语句
    • break语句
    • continue语句
    • return语句
    • throw语句
    • try/catch/finally语句
  • 其他语句类型
    • with语句
    • debugger语句
    • “use strict”
  • 总结表
  • 总结

表达式语句

具有副作用的表达式是JavaScript中最简单的语句

a= "hello"+name;
i *= 3;
a++;
delete o.x;
alert(a);
window.close();

复合语句和空语句

复合语句

JavaScript中还可以将多条语句联合在一起,形成一条复合语句(compound statement)。只须用花括号将多条语句括起来即可。

{
	x=a;
	y=b;
	alert(x);
	alert(y);
}

关于语句块有几点需要注意

第一,语句块的结尾不需要分号。块中的原始语句必须以分号结束,但语句块不需要。

第二,语句块中的行都有缩进,这不是必需的,但整齐的缩进能让代码可读性更强,更容易理解。

最后,需要注意,JavaScript中没有块级作用域,在语句块中声明的变量并不是语句块私有的。

空语句

空语句(empty statement)则恰好相反,它允许包含0条语句的语句。

;
for(i=0;i<a.lengthl;a[i++]=0);
if(a==0);

声明语句

var

var语句用来声明一个或者多个变量

var i;
var j=0;
var a,b;
var x=0,y=1;

var声明的变量是无法通过delete删除的。

如果var语句中的变量没有指定初始化表达式,那么这个变量的值初始为undefined。

function

关键字function用来定义函数

var f = function(x){ return x+1; }
function f (x) {return x+1; }

f是要声明的函数的名称的标识符。

函数名之后的圆括号中是参数列表,参数之间使用逗号分隔。

当调用函数时,这些标识符则指代传入函数的实参。

函数体是由JavaScript语句组成的,语句的数量不限,且用花括号括起来。

在定义函数时,并不执行函数体内的语句.

条件语句

if

if (username == null) //如果username是null或者undefined
	username = "J"  //对其进行定义

if/else

嵌套使用if语句时,必须注意确保else语句匹配正确的if语句

if(i == j)
{
	if(j==k){
		console.log("i等于k");
	}
}else{ //i不等于j时执行else的语句块
	console.log("i不等于j");
}

else if

if (n == 1){
	//执行代码块
}else if (n == 2){
	//执行代码块
}else{
	//之前的条件都为false时执行这里的代码块
}

switch

switch(n){
	case 1:
	//如果n === 1,执行这里的代码块
	break; //停止执行
	case 2:
	//如果n === 2,执行这里的代码块
	break; //停止执行
	case 3:
	//如果n === 3,执行这里的代码块
	break; //停止执行
	default:
	//如果都不匹配执行这里的代码块
	break; //停止执行
}

循环

JavaScript中有4种循环语句:while、do/while、for和for/in。

while

var count = 0;
while (count < 10){
//count小于10时执行代码块
	console.log(count);
	count++;//控制count避免出现无限循环(死循环)
}

变量count的初始值是0,在循环执行过程中,它的值每次都递增1。当循环执行了10次,表达式的值就变成了false(即,变量count的值不再小于10),这时while就会结束,JavaScript解释器将执行程序中的下一条语句。

do/while

do/while循环和while循环非常相似,只不过它是在循环的尾部而不是顶部检测循环表达式,这就意味着循环体至少会执行一次。

var count = 0;
do {
//count小于10时执行代码块
	console.log(count);
}while (count++ < 10);

首先,do循环要求必须使用关键字do来标识循环的开始,用while来标识循环的结尾并进入循环条件判断;其次,和while循环不同,do循环是用分号结尾的。

for

for(1;2;3)
1,2,3分别负责初始化操作、循环条件判断和计数器变量的更新。

输出数字0~9

for (var count=0;count<10;count++)
	console.log(count);

for/in

for (variable in object)

variable通常是一个变量名,也可以是一个可以产生左值的表达式或者一个通过var语句声明的变量,总之必须是一个适用于赋值表达式左侧的值。

object是一个表达式,这个表达式的计算结果是一个对象。

遍历对象属性成员

for (var p in o)
	console.log(o[p])

跳转

标签语句

语句是可以添加标签的,标签是由语句前的标识符和冒号组成.

通过给语句定义标签,就可以在程序的任何地方通过标签名引用这条语句。也可以对多条语句定义标签,尽管只有在给语句块定义标签时它才更有用,比如循环和条件判断语句。通过给循环定义一个标签名,可以在循环体内部使用break和continue来退出循环或者直接跳转到下一个循环的开始。break和continue是JavaScript中唯一可以使用语句标签的语句。

m: while(a != null){
	....
	continue m;
	....
}

break语句

单独使用break语句的作用是立即退出最内层的循环或switch语句。

当循环终止条件非常复杂时,在函数体内使用break语句实现这些条件判断的做法要比直接在循环表达式中写出这个复杂终止条件的做法简单很多。

for (var i = 0;i<a.length; i++){
	if(a[i]==target)break;
}

JavaScript中同样允许break关键字后面跟随一个语句标签

break mname;

continue语句

continue语句和break语句非常类似,但它不是退出循环,而是转而执行下一次循环。continue语句的语法和break语句语法一样简单.

continue;
continue mname;

return语句

return语句只能在函数体内出现,如果不是的话会报语法错误。当执行到return语句的时候,函数终止执行,并返回return 后面的值。

如果没有return语句,则函数调用仅依次执行函数体内的每一条语句直到函数结束,最后返回调用程序。

throw语句

所谓异常(exception)是当发生了某种异常情况或错误时产生的一个信号。抛出异常,就是用信号通知发生了错误或异常状况。捕获异常是指处理这个信号,即采取必要的手段从异常中恢复。在JavaScript中,当产生运行时错误或者程序使用throw语句时就会显式地抛出异常。

function factorial(x){
	if(x<0) throw new Error("x不能是负数");
	//如果输入参数是非法的,则抛出一个异常
		return f;
}

try/catch/finally语句

其中try从句定义了需要处理的异常所在的代码块。catch从句跟随在try从句之后,当try块内某处发生了异常时,调用catch内的代码逻辑。catch从句后跟随finally块,后者中放置清理代码,不管try块中是否产生异常,finally块内的逻辑总是会执行。尽管catch和finally都是可选的,但try从句需要至少二者之一与之组成完整的语句。

try{
	//需要处理的异常的代码块
}catch(e){
	//try语句抛出异常后 执行这里的代码
	//可以基于特定的原因处理这个异常
	//可以通过throw语句重新抛出异常
}finally{
	//不管try语句块是否抛出了异常,这里的代码总是执行
	//终止try语句块的方式有:
	//1.正常终止,执行完语句块的最后一条语句
	//2.通过break、continue或return语句终止
	//3.抛出一个异常,异常被catch捕获
	//4.抛出一个异常,异常未被捕获,继续向上传播
}

其他语句类型

with语句

一个可以按序检索的对象列表,通过它可以进行变量名解析。with语句用于临时扩展作用域链。

可能会使用类似下面这种表达式来访问一个HTML表单中的元素:
document.forms[0].address.value
如果这种表达式在代码中多次出现,
则可以使用with语句将form对象添加至作用域链的顶层:
with(document.forms[0]){
name.value='';
address.value='';
email.value='';
}

这种方法减少了大量的输入,不用再为每个属性名添加document.forms[0]前缀。这个对象临时挂载在作用域链上,当JavaScript需要解析诸如address的标识符时,就会自动在这个对象中查找。

debugger语句

debugger语句通常什么也不做。然而,当调试程序可用并运行的时候,JavaScript解释器将会(非必需)以调式模式运行。实际上,这条语句用来产生一个断点(breakpoint),JavaScript代码的执行会停止在断点的位置,这时可以使用调试器输出变量的值、检查调用栈等。

“use strict”

“use strict”是ECMAScript 5引入的一条指令。指令不是语句(但非常接近于语句)。

使用“use strict”指令的目的是说明(脚本或函数中)后续的代码将会解析为严格代码(strict code)。如果顶层(不在任何函数内的)代码使用了“use strict”指令,那么它们就是严格代码。如果函数体定义所处的代码是严格代码或者函数体使用了“use strict”指令,那么函数体的代码也是严格代码。如果eval()调用时所处的代码是严格代码或者eval()要执行的字符串中使用了“scrict code”指令,则eval()内的代码是严格代码。

总结表

总结

本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注我们的更多内容!

(0)

相关推荐

  • JavaScript中条件语句的优化技巧总结

    对多个条件使用 Array.includes function test(fruit) { if (fruit == 'apple' || fruit == 'strawberry') { console.log('red'); } } 上面的例子看起来不错.然而,如果还有更多红颜色的水果需要判断呢,比如樱桃和小红莓,我们要用更多的 ||来扩展这个表述吗? 我们可以用 Array.includes 重写上面的条件! function test(fruit) { const redFruits =

  • python如何运行js语句

    1. 安装 pip install PyExecJS  # 需要注意, 包的名称:PyExecJS 2. 简单使用 import execjs execjs.eval("new Date") 返回值为: 2018-04-04T12:53:17.759Z execjs.eval("Date.now()") 返回值为:1522847001080  # 需要注意的是返回值是13位, 区别于python的time.time() 需要注意的是: 个别的JS语句, 用execj

  • JavaScript中三种for循环语句的使用总结(for、for...in、for...of)

    前言 每个接触JS的开发人员都不可避免的与for循环打交道,毕竟这是遍历必不可少的工具之一.JavaScript 中的 for 循环语句相信大家都已经快用厌了,现在有好多文章都在讲怎么减少代码中的 for 循环语句,但是,你又不得不承认它们真的很有用.今天,我来总结一下前端 JavaScript 中三种 for 循环语句. for 这大概是应用最广的循环语句了吧,简单实用,且大多数时候性能还是在线的,唯一的缺点大概就是太普通,没有特色,导致很多人现在不愿用它. const array = [4,

  • JavaScript 语句之常用 for 循环详解

    JavaScript中循环语句不少,for.for in.for of和forEach循环,今天对比Array.Object.Set(ES6).Map(ES6)四种数据结构循环语句支持的情况及区别. 新建四种数据类型的测试数据 let arr = [1, 2, 3, 4, 5, 6]; let obj = { a: 1, b: 2, c: 3 }; let map = new Map([['a', 'a1'], ['b', 'b2'], ['c', 'c3']]); let set = new

  • 你可能不需要在JavaScript使用switch语句

    没有 switch 就没有复杂的代码块 switch很方便:给定一个表达式,我们可以检查它是否与一堆case子句中的其他表达式匹配. 考虑以下示例: const name = "Juliana"; switch (name) { case "Juliana": console.log("She's Juliana"); break; case "Tom": console.log("She's not Juliana

  • 一篇文章带你吃透JavaScript中的DOM知识及用法

    目录 一.前言 二.DOM框架 三.认识DOM节点 四.JS访问DOM 1.获取节点 2.改变 HTML 3.改变 CSS 4.检测节点类型 5.操作节点间的父子及兄弟关系 6.操作节点属性 7.创建和操作节点 总结 一.前言 DOM:Document Object Model(文档对象模型),定义了用户操作文档对象的接口,可以说DOM是自HTML将网上相关文档连接起来后最伟大的创新.它使得用户对HTML有了空前的访问能力,并使开发者将HTML作为XML文档来处理. 本文知识导图如下: 二.DO

  • 一篇文章带你了解JavaScript的包装类型

    目录 1.简介 2.String 1.创建语法 2.常用方法 3.更多方法 3.Number 1.语法 2.属性 3.常用方法 4.Boolean 总结 1.简介 [解释]: 在 JavaScript 中的字符串.数值.布尔具有对象的使用特征,如具有属性和方法,之所以具有对象特征的原因是字符串.数值.布尔类型数据是JavaScript 底层使用 Object 构造函数“包装”来的,被称为包装类型. 2.String 1.创建语法 字面量 let str = 'abcd'; 构造函数 let st

  • 一篇文章带你了解JavaScript的解构赋值

    目录 1. 什么是解构赋值 ? 2. 数组的解构赋值 2.1) 数组解构赋值的默认值 2.2) 数组解构赋值的应用 类数组中的应用 交换变量的值 3. 对象的解构赋值 3.1) 对象解构赋值的默认值 3.2)对一个已声明的变量解构赋值 4. 字符串的解构赋值 总结 1. 什么是解构赋值 ? 将属性/值从对象/数组中取出,赋值给其他变量 通俗来说,即解析某一数据的结构,将我们想要的东西提取出来,赋值给变量或常量. 让我们通过一个例子看看: const [a, b, c] = [1, 2, 3];

  • 一篇文章带你了解清楚Mysql 锁

    一丶为什么数据库需要锁 数据库锁设计的初衷是处理并发问题.作为多用户共享 的资源,当出现并发访问的时候,数据库需要合理地控制资源的访问规则.而锁就是用来实 现这些访问规则的重要数据结构. 根据加锁的范围,MySQL 里面的锁大致可以分成全局锁.表级锁和行锁三类 二丶全局锁&全库逻辑备份 全局锁就是对整个数据库实例加锁.全局锁的典型使用场景是,做全库逻辑备份,全库逻辑备份有以下几种方式: 1.Flush tables with read lock (FTWRL) Flush tables with

  • 一篇文章带你使用Typescript封装一个Vue组件(简单易懂)

    一.搭建项目以及初始化配置 vue create ts_vue_btn 这里使用了vue CLI3自定义选择的服务,我选择了ts.stylus等工具.然后创建完项目之后,进入项目.使用快捷命令code .进入Vs code编辑器(如果没有code .,需要将编辑器的bin文件目录地址放到环境变量的path中).然后,我进入编辑器之后,进入设置工作区,随便设置一个参数,这里比如推荐设置字号,点下.这里是为了生成.vscode文件夹,里面有个json文件. 我们在开发项目的时候,项目文件夹内的文件很

  • 一篇文章带你搞定SpringBoot中的热部署devtools方法

    一.前期配置 创建项目时,需要加入 DevTools 依赖 二.测试使用 (1)建立 HelloController @RestController public class HelloController { @GetMapping("/hello") public String hello(){ return "hello devtools"; } } 对其进行修改:然后不用重新运行,重新构建即可:只加载变化的类 三.热部署的原理 Spring Boot 中热部

  • 一篇文章带你搞定SpringBoot不重启项目实现修改静态资源

    一.通过配置文件控制静态资源的热部署 在配置文件 application.properties 中添加: #表示从这个默认不触发重启的目录中除去static目录 spring.devtools.restart.exclude=classpath:/static/** 或者使用: #表示将static目录加入到修改资源会重启的目录中来 spring.devtools.restart.additional-paths=src/main/resource/static 此时对static 目录下的静态

  • 一篇文章带你解决 IDEA 每次新建项目 maven home directory 总是改变的问题

    Maven是基bai于项目对象模型,可以通du过一小段描述信息来管理zhi项目的构建,报告和文档的软件项dao目管理工具. 重装个系统,各种问题,idea 也出现各种问题 装了个新版的 idea 2020 2.x 版本的,不知道咋回事,其他都好使,就是创建 SpringBoot 项目时: 加载 pom.xml 总是出错,原因就是,新建立的项目 maven home directory 总是乱,没有安装 设置的默认方式 我试了,改当前项目的,不好使 该默认设置,不好使,网上的其他方法也试了,很奇怪

  • 一篇文章带你使用SpringBoot基于WebSocket的在线群聊实现

    一.添加依赖 加入前端需要用到的依赖: <dependency> <groupId>org.webjars</groupId> <artifactId>sockjs-client</artifactId> <version>1.1.2</version> </dependency> <dependency> <groupId>org.webjars</groupId> <

  • 一篇文章带你搞定 springsecurity基于数据库的认证(springsecurity整合mybatis)

    一.前期配置 1. 加入依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.10</version> </dependency> <dependency> <groupId>mysql</groupId> &

随机推荐