5JS语句

表达式在JavaScript中是短语,那么语句(statement)就是JavaScript整句或命令。

表达式计算出一个值,但语句用来执行以使某件事发生。诸如赋值和函数调用这些有副作用的表达式,是可以作为单独的语句的,这种把表达式当做语句的用法也称做表达式语句(expressionstatement)。类似的语句还有声明语句(declaration statement),声明语句用来声明新变量或定义新函数。

JavaScript程序无非就是一系列可执行语句的集合。原则上按照顺序执行。另外有控制结构(control structure)来改变语句的默认执行顺序。

条件语句 conditional, 循环语句 loop, 跳转语句 jump。

一个JavaScript程序无非是一个以分号分隔的语句集合,所以一旦掌握了JavaScript语句,就可以开始编写JavaScript程序了。

5.1表达式语句

具有副作用的表达式是JavaScript中最简单的语句。包括: 赋值,递增运算符,delete运算符,函数调用。

5.2复合语句与空语句

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

<tips>JavaScript中没有块级作用域,在语句块中声明的变量并不是语句块私有的.

使用语句块,可以将任意数量的语句放到这个块中,这个语句块可以作为一条语句使用。

空语句: 

;

注意,在for循环、while循环或if语句的右圆括号后的分号很不起眼,这很可能造成一些致命bug,而这些bug很难定位到。

5.3声明语句

let, const, function

函数声明语句通常出现在JavaScript代码的最顶层,也可以嵌套在其他函数体内。

5.4条件语句

5.4.1 if

f语句是一种基本的控制语句。 可以有else从句也可以没有。最好将if 和else的从句内容用{}分隔开。

5.4.2 else if

5.4.3 switch 

示例, break/ return;表示停止执行switch语句。

function convert(x){
switch(typeof x){
case'number'://将数字转换为十六进制数
return x.toString(16);
case'string'://返回两端带双引号的字符串
return'"'+x+'"';
default://使用普通的方法转换其他类型
return String(x);
}
}

最安全的做法就是在case表达式中使用常量表达式。

如果switch表达式与所有case表达式都不匹配,则执行标记为"default:"的语句块;如果没有"default:"标签,则switch的整个语句块都将跳过。

5.5循环语句

循环语句(loopingstatement)就是程序路径的一个回路,可以让一部分代码重复执行。JavaScript中有4种循环语句:while、do/while、for和for/in。

5.5.1while

while语句是一个基本循环语句

5.5.2 do/ while

循环体至少会执行一次.

5.5.3 for

for语句提供了一种比while语句更加方便的循环控制结构。

5.5.4 for/in

实现枚举的功能。 属性枚举的顺序。。。。

5.6跳转语句

5.6.1 标签语句

5.6.2 break

5.6.3 continue

5.6.4 return

5.6.5 throw

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

当抛出异常时,JavaScript解释器会立即停止当前正在执行的逻辑,并跳转至就近的异常处理程序。异常处理程序是用try/catch/finally语句的catch从句编写的.如果没有找到任何异常处理程序,JavaScript将把异常当成程序错误来处理,并报告给用户。

5.6.6try/catch/finally

try/catch/finally语句是JavaScript的异常处理机制。其中try从句定义了需要处理的异常所在的代码块。catch从句跟随在try从句之后,当try块内某处发生了异常时,调用catch内的代码逻辑。catch从句后跟随finally块,后者中放置清理代码,不管try块中是否产生异常,finally块内的逻辑总是会执行。

5.7其他语句

width、debugger和use strict.

with语句用于临时扩展作用域链

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

严格代码以严格模式执行。

在严格模式中禁止使用with语句。

在严格模式中,所有的变量都要先声明.

在严格模式中,调用的函数(不是方法)中的一个this值是undefined。

在严格模式中,当通过call()或apply()来调用函数时,其中的this值就是通过call()或apply()传入的第一个参数

在严格模式中,给只读属性赋值和给不可扩展的对象创建新成员都将抛出一个类型错误异常

·在严格模式中,传入eval()的代码不能在调用程序所在的上下文中声明变量或定义函数,而在非严格模式中是可以这样做的。

在严格模式中,函数里的arguments对象(见8.3.2节)拥有传入函数值的静态副本。

·在严格模式中,当delete运算符后跟随非法的标识符(比如变量、函数、函数参数)时,将会抛出一个语法错误异常

·在严格模式中,试图删除一个不可配置的属性将抛出一个类型错误异常

在严格模式中,在一个对象直接量中定义两个或多个同名属性将产生一个语法错误

·在严格模式中,函数声明中存在两个或多个同名的参数将产生一个语法错误

·在严格模式中,函数声明中存在两个或多个同名的参数将产生一个语法错误

·在严格模式中是不允许使用八进制整数直接量(以0为前缀,而不是0x为前缀)的

在严格模式中,标识符eval和arguments当做关键字,它们的值是不能更改的。

·在严格模式中限制了对调用栈的检测能力,在严格模式的函数中,arguments.caller和arguments.callee都会抛出一个类型错误异常。

5.8 总结

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/648103.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

光控自动照明灯电路原理图

原理图&#xff1a; 电路原理&#xff1a; R1和R2构成分压电路&#xff0c;当环境光线较强时&#xff0c;光敏电阻阻值较小&#xff0c;R2上的电压较小&#xff0c;无法使三极管Q1导通&#xff0c;此时三极管的集电极没有电流通过&#xff0c;发光二极管DS不亮。当光线较暗时&…

uniapp使用uQRCode插件生成二维码的简单使用

最近在找移动端绘制二维码的问题 &#xff0c;直接上代码 下载 weapp-qrcode.js(可以通过npm install weapp-qrcode --save 下载,之后把它父子到untils目录下&#xff09; npm install weapp-qrcode --save在组件页面使用 <canvas id"couponQrcode" canvas-id&qu…

非线性数据结构

非线性数据结构 set集合 ①有序不重复 set ②有序可重复 multiset ③无序不重复 unordered_set ④无序可重复 unordered_multiset 有序省内存 无序省时间 //头文件 #include <set> #include <unordered_set> //构造 set<int> set1{1,2,3};//有序不重复 mul…

Spring Boot3整合MyBatis Plus

目录 1.前置条件 2.导坐标 3.配置数据源 4.mybatis-plus基础配置 5.配置mapper扫描路径 6.MyBatis Plus代码生成器整合 1.导坐标 2.编写代码生成逻辑 7.整合Druid连接池 1.前置条件 已经初始化好一个spring boot项目且版本为3X&#xff0c;项目可正常启动 初始化教程…

昂首资本闪耀石家庄交易技术峰会,尽释行业进取之姿

“2024年石家庄交易技术峰会”在中国河北石家庄举办&#xff0c;Anzo Capital昂首资本作为2024年交易峰会的独家赞助商出席本次活动&#xff0c;Anzo Capital 魄力超前&#xff0c;尽显行业进取之姿。 “开门红”——作为2024年的首场交易技术峰会&#xff0c;“石家庄交易技术…

幻兽帕鲁专用服务器设置,与好友畅玩

创建幻兽帕鲁服务器1分钟部署教程&#xff0c;阿里云和腾讯云均推出幻兽帕鲁服务器专属优惠服务器和部署教程&#xff0c;4核16G和4核32G配置可选&#xff0c;阿腾云atengyun.com分享1分钟自建幻兽帕鲁Palworld服务器教程&#xff0c;附阿里云和腾讯云专属幻兽帕鲁优惠价格表&a…

openssl3.2/test/certs - 061 - other@good.org not permitted by CA1

文章目录 openssl3.2/test/certs - 061 - othergood.org not permitted by CA1概述笔记END openssl3.2/test/certs - 061 - othergood.org not permitted by CA1 概述 openssl3.2 - 官方demo学习 - test - certs 笔记 /*! * \file D:\my_dev\my_local_git_prj\study\openSS…

DAY10_SpringBoot—SpringMVC重定向和转发RestFul风格JSON格式SSM框架整合Ajax-JQuery

目录 1 SpringMVC1.1 重定向和转发1.1.1 转发1.1.2 重定向1.1.3 转发练习1.1.4 重定向练习1.1.5 重定向/转发特点1.1.6 重定向/转发意义 1.2 RestFul风格1.2.1 RestFul入门案例1.2.2 简化业务调用 1.3 JSON1.3.1 JSON介绍1.3.2 JSON格式1.3.2.1 Object格式1.3.2.2 Array格式1.3…

cocos creator 碰撞系统

设置碰撞组件 * 添加组件中添加碰撞组件 3种组件类型&#xff0c;矩形碰撞&#xff0c;圆形碰撞&#xff0c; 多边形碰撞 开启碰撞检测 start() {//开启碰撞管理器let cm cc.director.getCollisionManager()cm.enabled true//绘制碰撞检测边界线。用于调试cm.enabledDebug…

01 Redis的特性+下载安装启动

1.1 NoSQL NoSQL&#xff08;“non-relational”&#xff0c; “Not Only SQL”&#xff09;&#xff0c;泛指非关系型的数据库。 键值存储数据库 &#xff1a; 就像 Map 一样的 key-value 对。如Redis文档数据库 &#xff1a; NoSQL 与关系型数据的结合&#xff0c;最像关系…

GUN/Linux时间同步服务之chrony配置管理

风险告知 本人及本篇博文不为任何人及任何行为的任何风险承担责任&#xff0c;图解仅供参考&#xff0c;请悉知&#xff01;相关配置操作是在一个全新的演示环境下进行的&#xff0c;演示环境中没有任何有价值的数据&#xff0c;但这并不代表摆在你面前的环境也是如此。生产环境…

Java 8中使用Stream来操作集合

如何在Java 8中使用Stream来操作集合&#xff1f; 在Java 8中&#xff0c;你可以使用Stream API来操作集合。Stream API是Java 8引入的一种新特性&#xff0c;它允许你以声明性方式处理数据集合&#xff0c;如对集合进行过滤、映射、排序等操作。 以下是一些基本的Stream操作…

ICMP协议详解

ICMP&#xff08;Internet Control Message Protocol&#xff09;协议是一个网络层协议。 一个新搭建好的网络&#xff0c;往往需要先进行一个简单的测试&#xff0c;来验证网络是否畅通&#xff1b;但是IP协议并不提供可靠传输。如果丢包了&#xff0c;IP协议并不能通知传输层…

QY-18A 远程倾斜位移监测仪

产品概述 远程倾斜位移监测仪具有体积小、精度高、安装方便、功能完备等优势&#xff0c;可对被测物进行实时的监测&#xff0c;兼具自动化、云模式、高精度。能根据对设备自身的X、Y、Z三个方向的姿态倾斜状况进行实时监测&#xff0c;测量出监测点的相对位移量和方位角&…

Java中Integer(127)==Integer(127)为True,Integer(128)==Integer(128)却为False,这是为什么?

文章目录 1.前言2. 源码解析3.总结 1.前言 相信大家职业生涯中或多或少的碰到过Java比较变态的笔试题&#xff0c;下面这道题目大家应该不陌生&#xff1a; Integer i 127; Integer j 127;Integer m 128; Integer n 128;System.out.println(i j); // 输出为 true System.o…

阿里云之申请云服务器

阿里云注册建议使用支付宝扫码。 点击产品&#xff0c;勾选个人认证&#xff0c;云服务器。选择第二个。第一个会自动给你续费&#xff0c;第二个不会。 以下配置&#xff0c;只要是博主没说的都可以根据初始选项选择。&#xff08;不用管&#xff09; 地域&#xff1a;选择与…

嵌入式软件工程师面试题——2025校招社招通用(C/C++)(三十九)

说明&#xff1a; 面试群&#xff0c;群号&#xff1a; 228447240面试题来源于网络书籍&#xff0c;公司题目以及博主原创或修改&#xff08;题目大部分来源于各种公司&#xff09;&#xff1b;文中很多题目&#xff0c;或许大家直接编译器写完&#xff0c;1分钟就出结果了。但…

C语言实现“空心”正方形图案输出的程序解析

我们可以利用循环结构和条件判断语句来绘制各种图形。下面&#xff0c;我将对一个通过while循环和嵌套for循环实现“空心”正方形输出的C语言代码进行详细解析。 #include <stdio.h>int main() {int a;while (scanf("%d", &a) ! EOF) { // 输入循环&#…

Unknown encoder ‘libmp3lame

环境&#xff1a; macos m1 &#xff0c; python3.10.x 背景 做视频切片&#xff0c; 使用moviepy 中VideoFileClip进行截取视频。 报错&#xff1a; Unknown encoder libmp3lameThe audio export failed because FFMPEG didnt find the specified codec for audio encoding …

【ARMv8M Cortex-M33 系列 7 -- RA4M2 移植 RT-Thread 问题总结】

请阅读【嵌入式开发学习必备专栏 】 文章目录 问题小结栈未对齐 经过几天的调试&#xff0c;成功将rt-thead 移植到 RA4M2&#xff08;Cortex-M33 核&#xff09;上&#xff0c;thread 和 shell 命令已经都成功支持。 问题小结 在完成 rt-thread 代码 Makefile 编译系统搭建…