5JS语句

news2024/11/15 7:08:22

表达式在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.coloradmin.cn/o/1411749.html

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

相关文章

gitlab设置/修改克隆clone地址端口

最近由于公司要停测试库云服务器? 什么?要停测试库服务器??? 是的! 你没听错。 真是醉了,多大的集团,为了省钱,也真是拼了, 作为开发人员,没有测试服务器,犹如断臂之人。 所以,在之前搭建环境的时候都没有写文档,今天算是弥补上,以后都可以作为参考了, …

vue3 根据点击位置,实现一个用户头像弹框定位

vue3 根据点击位置&#xff0c;实现一个用户头像弹框定位 需求背景 最近在做直播后台&#xff0c;涉及到对用户的一些操作&#xff0c;比如关注/取关/禁言/踢出直播间。多个地方都要用&#xff0c;需要封装一个弹框组件 效果图 实现过程分析 根据点击元素&#xff0c;获取元…

在游戏里开公司!基于ERNIE SDK的多智能体游戏应用

在虚拟世界有一座神奇的办公室&#xff0c;当你输入你的创业方向&#xff0c;办公室的智慧打工人们将团结合作&#xff0c;为你的项目勤劳奔走&#xff0c;并在过程中&#xff0c;把日报周报都写好&#xff0c;让你随时掌握项目进度和最终成果&#xff01;该项目基于ERNIE SDK开…

频率的高低与辐射强度有关系吗?

频率的高低和辐射强度之间存在一定的关系。 一般而言&#xff0c;频率越高&#xff0c;辐射强度越大&#xff0c;即电磁辐射的能量越大。这是因为电磁波的能量与其频率成正比。在电磁波谱中&#xff0c;如X光和伽玛射线具有高频率和强辐射强度&#xff0c;可以破坏构成人体组织…

Python静态web服务器实战

准备html页面&#xff0c;包含两个页面(index.html, index2.html)和一个404(404html)页面&#xff0c;目录示意&#xff1a; 1.返回固定页面 with open("website/index.html","r") as file: import socket# # 返回固定的页面 website/index.html if __na…

怎么将word转换成pdf?一步到位,轻松搞定!

怎么将word转换成pdf&#xff1f;在数字时代&#xff0c;我们经常需要将文档转换为PDF格式&#xff0c;以便在不同的设备和平台上共享和查看。然而&#xff0c;许多人对如何将Word转换成PDF感到困惑。本文将为你详细介绍将Word转换成PDF的步骤&#xff0c;让你轻松掌握这一技能…

php+Layui开发的网站信息探针查询源码

信息探针是一款基于layui开发的专业查询好友个人信息的程序。 自定义设置探针页面&#xff0c;探针功能&#xff0c;QQ分享&#xff0c;通知邮箱等功能。 生成页面链接好友点击会出现好友ip 位置信息&#xff0c;手机型号ua头浏览器等信息 gps需要注册百度地图开发者才可以使用…

【RabbitMQ】延迟队列之死信交换机

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是Java方文山&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的专栏《RabbitMQ实战》。&#x1f3af;&#x1f3af; &am…

代码随想录算法训练营第31天(贪心算法01 | ● 455.分发饼干 ● 376. 摆动序列 ● 53. 最大子序和

贪心算法01 理论基础455.分发饼干解题思路 376. 摆动序列解题思路拓展 53. 最大子序和解题思路常见误区注意点 贪心算法其实就是没有什么规律可言&#xff0c;所以大家了解贪心算法 就了解它没有规律的本质就够了。 不用花心思去研究其规律&#xff0c; 没有思路就立刻看题解。…

mysql入门到精通002--基础篇

1、基础篇课程内容 2、MySQL概述 2.1 数据库相关概念 2.1.1、数据库 存储数据的仓库 2.1.2、SQL 操作关系型数据库的一套标准语言&#xff0c;定义了一套关系型数据库的统一标准。 2.1.3、关系型数据库管理系统 2.2 mysql数据库 2.2.1 安装与使用 下载地址&#xff1a;…

婴幼儿营养之道:新生儿补充磷脂酰丝氨酸的关键

引言&#xff1a; 磷脂酰丝氨酸是一种对于新生儿神经系统发育和整体健康至关重要的成分。在新生儿成长的早期阶段&#xff0c;科学合理的补充磷脂酰丝氨酸有助于促进大脑和神经系统的发育&#xff0c;为宝宝的智力和身体健康奠定坚实基础。本文将深入探讨磷脂酰丝氨酸的作用、…

24.1.25 DAY2 C++

思维导图&#xff1a; 2.题目&#xff1a; 自己封装一个矩形类(Rect)&#xff0c;拥有私有属性:宽度(width)、高度(height)&#xff0c; 定义公有成员函数: 初始化函数:void init(int w, int h) 更改宽度的函数:set_w(int w) 更改高度的函数:set_h(int h) 输出该矩形的周…

Android串口通讯 报错 NO_READ_WRITE_PERMISSION

在调试Android串口通讯的时候&#xff0c;特别是串口连接使用的usb接口作为物理介质的时候&#xff0c;报错 NO_READ_WRITE_PERMISSION &#xff0c;一个很容易忽略的问题就是串口地址错误 因为每个机器都有自己的串口地址名称定义方式。 解决办法&#xff1a;1、通过cmd sh…

Google Chrome RCE漏洞 CVE-2020-6507 和 CVE-2024-0517的简单分析

本文深入研究了两个在 Google Chrome 的 V8 JavaScript 引擎中发现的漏洞&#xff0c;分别是 CVE-2020-6507 和 CVE-2024-0517。这两个漏洞都涉及 V8 引擎的堆损坏问题&#xff0c;允许远程代码执行。通过EXP HTML部分的内存操作、垃圾回收等流程方式实施利用攻击。 CVE-2020-…

查询机器近期的重启记录

打开Command Prompt命令行&#xff0c;运行下面命令&#xff1a; systeminfo | find "System Boot Time:" 如图&#xff0c;这台设备上一次重启时间是1月21日。

Ant Design Vue详解a-tree-select使用树形选择器,递归渲染数据,点击选项回显,一二级菜单是否可选等问题

后台给的树形数据&#xff1a; {"code": 200,"data": [{"code": "jsd","children": [{"code": "hx","children": [],"name": "航向","id": 8,"libTable…

YOLOv8改进 | Conv篇 | 利用DualConv二次创新C2f提出一种轻量化结构(轻量化创新)

一、本文介绍 本文给大家带来的改进机制是利用DualConv改进C2f提出一种轻量化的C2f,DualConv是一种创新的卷积网络结构,旨在构建轻量级的深度神经网络。它通过结合33和11的卷积核处理相同的输入特征映射通道,优化了信息处理和特征提取。DualConv利用组卷积技术高效排列卷积…

【AI】Chinese-LLaMA-Alpaca-2 7B llama.cpp 量化方法选择及推理速度测试 x86_64 RTX 2060 6G 显存太小了

环境 操作系统 CPU 内存 生成量化版本模型 转换出q4_0 q4_k q6_k q8_0模型 cd ~/Downloads/ai/llama.cpp sourvce venv/bin/activate ~/Downloads/ai/llama.cpp/quantize /home/yeqiang/Downloads/ai/chinese-alpaca-2-7b/ggml-model-f16.gguf /home/yeqiang/Downloads/ai/ch…

mapstruct自定义转换,怎样将String转化为List

源码&#xff1a;https://gitee.com/cao_wen_bin/test 最近在公司遇到了这样一个为题&#xff0c;前端传过来的是一个List<Manager>,往数据库中保存到时候是String&#xff0c;这个String使用谷歌的json转化器。 当查询的时候在将这个数据库中String的数据以List<Mana…

Leetcode—29. 两数相除【中等】

2023每日刷题&#xff08;九十四&#xff09; Leetcode—29. 两数相除 叛逆期实现代码 class Solution { public:int divide(int dividend, int divisor) {if(dividend INT_MIN && divisor -1) {return INT_MAX;} return dividend / divisor;} };运行结果 倍增算法…