【JavaEE】JavaScript(基础语法)2

news2024/10/1 5:28:13

努力经营当下,直至未来明朗!

文章目录

  • 前言
  • 四、【运算符】
  • 五、条件、三元、switch、循环语句
  • 六、数组
  • 七、函数
  • 八、 对象
  • THINK


前言

一个人最大的痛苦来自于对自己无能的愤怒!

Hi,这里依旧是秃头宝贝儿!

兔兔
本文依旧是介绍JS基础语法的,紧接着上一篇文章介绍。


四、【运算符】

JS的运算符整体和Java差不多

  1. 算术运算符:

+
-
*
/
%

  1. 赋值运算符 & 复合赋值运算符

=
+=
-=
*=
/=
%=

  1. 自增自减运算符

++: 自增1
- -: 自减1
也有前置和后置

  1. 比较运算符

<
>
<=
>=
== 比较相等(会进行 隐式类型转换)
!= (也会进行隐式类型转换)
=== 比较相等(不会进行隐式类型转换)(类型不同则直接false)
!== (不会进行隐式类型转换)

  1. 逻辑运算符
    用于计算多个 boolean 表达式的值.

&& 与: 一假则假
|| 或: 一真则真
! 非

  1. 位运算

& 按位与
| 按位或
~ 按位取反
^ 按位异或

  1. 移位运算

<< 左移
>> 有符号右移(算术右移)
>>> 无符号右移(逻辑右移)

【补充】

  1. == 和 === (能否隐式类型转换)
    1

  2. 比较相等是不能用于比较两个浮点数的!!比较浮点数有风险:因为浮点数本质是遵守IEEE 754标准的,表示浮点数不一定精确,尤其是在进行算术运算的时候容易放大误差。

  3. 逻辑运算符
    Java的与 和 或 返回的是true /false
    JS的与 和 或 返回的是 第一个表达式 或 第二个表达式

【c= a || b:如果a为真就将a的值赋值给c,但是如果a为假就将b赋值给c
c= a && b:如果a为假就将a的值赋值给c,否则就是b】

(大多数使用或||、与&&其实就是为了保证其中有变量是undefined或null的时候至少还可以保证0,如下:
2


五、条件、三元、switch、循环语句

都和Java类似,就简单介绍带过。

  1. 条件语句:其实就是if语句,和Java类似。
  2. 三元表达式:
条件 ? 表达式1 : 表达式2
// 注意, 三元表达式的优先级是比较低的
  1. switch语句:switch、case、break、default
  2. 循环语句:while、continue、break、for

六、数组

【数组】:和java差别较大,主要原因就是隐式类型转换

  1. 和Java不同,JS的数组是可以动态变化的,JS的数组更接近与Java的ArrayList。
    2

2.JS的数组允许里面存在不同类型的元素!!而Java则要求一个数组中无比是同一类型。
3

(归咎于动态类型,其他的动态类型语言如Python、PHP、Ruby…也都是类似的设定)

  1. 访问数组元素,通过下标方式进行操作,依旧是从0开始;如果下标超出范围读取元素, 则结果为 undefined。(Java中抛出下标访问越界异常)
    (是可以修改数组元素的,还可以直接打印整个数组元素)
    5
    6

(发现长度length是针对整个数组的,不管是添加元素前后;赋值时可以直接指定目前不存在的下标位置赋值,中间的间隔元素是空/undefined。)
(如果给下标-1位置赋值:数组整体长度不变,且取元素是可以取到的!)
7

其实JS的数组不仅是个数组,还能起到map这样的效果(键值对)
8
9
10

所以:把数组视为一个对象,JS对象和Java对象不同,JS对象是可以在运行时随意新增属性的。JS中访问成员既可以使用. 也可以使用[ ]。对于js数组来说,[ ]里面是非负整数的时候才把这个操作视为是“操作下标”,如果是其他类型的值,就都认为是数组的自定义属性。

虽然数组有能力表示键值对,但是不建议这样使用;
js中有专门的map类型来表示键值对(ES标准引入的特性)——PHP类似,Python(叫列表)还好。

  1. 数组新增元素有很多种方式:最常使用的就是push方法进行尾插。使用pop进行尾删并返回该元素

11

(其实push、pop就会想到Java数据结构中的栈)

  1. JS的数组也支持中间位置的插入和删除,还可以进行元素的替换:splice
    12
splice(m,n,k);  
 // m:表示你要取的数组的起始下标;  
 // n:表示你要取的数组的长度,0就表示不对原来的内容做出调整;  
 // k:表示要替换到数组指定范围的新的值。

所以:splice的本质功能是“替换”,取数组上的一段,把这一段替换成新的内容(替换内容跟原内容不是一一对应关系)

【如果第三个参数啥也不写就是“删除”功能】


七、函数

  1. 我们一般是不区分函数function和方法method的,但是如果深究的话:函数就相当于是独立的一段逻辑(不依附对象);而方法则是依赖于一个对象的(本质上就是编译器在编译的时候自动给方法前面多加了个参数,然后自动把this传进去)
    ——Python、Go比较明显

  2. JS中,函数function不必写返回值类型(因为动态类型);形参列表的每个形参类型也不必显式的写出(一个函数可以支持多种类型的参数)

// 创建函数/函数声明/函数定义 
function 函数名(形参列表) { 
   函数体 
   return 返回值; 
} 
// 函数调用 
函数名(实参列表)           // 不考虑返回值 
返回值 = 函数名(实参列表)   // 考虑返回值

13

① 正因为JS是动态类型,所以在调用函数进行传参的时候,同一个函数就允许传不同的类型;但是要保证传入的类型能够在函数内部正常使用,否则可能就会出行如NaN的情况
② 像JS这样的动态类型的语言,相当于自带了“泛型”机制,也不需要函数重载这样的语法

  1. JS的函数能够支持不同个数的参数,即JS并不强制要求形参和实参个数匹配!!
    即:就是调用函数的时候,实参的个数可以比形参多可以比形参少,不会出现语法错误。
    但是当实参比形参多的时候,多出来的实参就不能通过形参获取到了(即:此时多出来的实参无效)。
    当实参比形参少的时候,多出来的形参就是undefined

15(undefined和数字相加结果就是NaN)

  1. 那么如何能够在任何情况下都算出正确结果呢?
    ① 使用逻辑或操作解决了实参<形参中形参的undefined问题
    16

② 那么实参>形参时又该怎么办呢?
可以直接使用arguments数组解决形参和实参之间的所有个数不匹配问题(多or少),arguments这个数组中就包含了调用该方法的所有实参的值!:
17

① so:为啥splice方法可以支持多个变长的参数,就是通过arguments数组来完成的
② js中可以加分号,也可以不加,一般建议还是加上

  1. 函数表达式
    在js中函数是可以像普通变量一样进行赋值的,还可以作为另一个函数的参数或返回值。所以称函数在js中是“一等公民”,即:这个函数和普通变量一样。
    调用方法和普通函数一样,此处的function()其实就类似于匿名函数(lambda表达式)。
    17

  2. 函数作用域:
    Js里,当代码尝试访问一个变量时会首先查找当前的代码块;如果当前的代码块中没有就继续往上级代码块中查找,一直查到全局作用域(全局作用域就是

【前端面试最喜欢考:闭包(在作用域的基础上会改变变量的生命周期)和原型链】


八、 对象

【对象】:js对象类似于Java对象,但是更加简化

  1. js中的对象是使用{}来表示的,对象中可以有属性和方法(使用的是:以及,)。定义好对象之后可以使用.进行访问
    (补充:在当前vscode下按control+shift+c 可以调出cmd)

20
在js中创建对象不需要类,但是js中也有类的概念(ES6版本的语法才加入的)

  1. 可以使用构造函数解决创建对象的冗余问题,构造函数是可以独立存在的。
    (在ES6标准之后引入了class关键字,也就允许js中定义“类”了)
    【重点放在使用{}创建对象的方法上,这个了解就行】
    JS写构造函数一般习惯上首字母大写

注意一下:创建对象是使用 new 构造函数名(实参)

21

  1. 在JS中虽然有类的概念,但是不能提供“封装”,也不能进行“继承”(可以通过“原型链”的机制模拟实现出类似于继承的效果),更不能实现“多态”。所以,JS并不是一个“面向对象”的编程语言!(面向对象的三个特征都没有)

THINK

  1. 运算符(主要关注 == 和 ===能否进行隐式类型转换 + 逻辑与、逻辑或与Java的差别)
  2. 数组(JS数组可以动态变化、splice进行替换)
  3. 函数(JS中形参实参个数不一定匹配,不指定类型。使用arguments数组!)
  4. 函数作用域链
  5. 构造函数创建对象
    yy

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

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

相关文章

win10录屏功能怎么打开,详细图文教学,轻松学会

在生活中&#xff0c;有不少人的电脑&#xff0c;都是WIN10系统&#xff0c;在学习工作或者娱乐的过程中想要录下视频&#xff0c;就需要使用win10录屏功能。Win10录屏功能怎么打开&#xff1f;Windows自带的屏幕录制功能如何使用&#xff1f;不要着急&#xff0c;今天小编将向…

尚医通-微信支付

流程梳理 依赖和工具类 <dependency><groupId>com.github.wxpay</groupId><artifactId>wxpay-sdk</artifactId><version>0.0.3</version> </dependency><dependency><groupId>com.example</groupId><ar…

Collagen胶原蛋白修饰亚油酸linoleic acid/甲磺酸酯Mesylate/磷酸三苯酯TPP

产品名称&#xff1a;胶原蛋白修饰亚油酸 英文名称&#xff1a;Collagen-linoleic acid 用途&#xff1a;科研 状态&#xff1a;固体/粉末/溶液 产品规格&#xff1a;1g/5g/10g 保存&#xff1a;冷藏 储藏条件&#xff1a;-20℃ 储存时间&#xff1a;1年 胶原蛋白是一种细胞外蛋…

Mybatis:Mybatis中特殊Sql执行(6)

特殊Sql执行1. 模糊查询2. 批量删除3. 动态设置表名4. 添加功能获取自增的主键5. 整体代码1. 模糊查询 /*** 根据用户名进行模糊查询* param moHu* return*/List<User> getUserByLike(Param("moHu") String moHu);<!--List<User> getUserByLike(Param…

Java多线程之相关拓展(静态代理和Lamda表达式演变)

Java多线程拓展之静态代理和Lamda表达式演变一、静态代理1、概念2、优点3、样例二、Lamda表达式&#xff08;演变过程展示&#xff09;1、定义一个函数式接口并实现类&#xff08;最初状态&#xff09;2、静态内部类&#xff08;状态演变2&#xff09;3、局部内部类&#xff08…

英国G5生物医学类专业IB成绩要求多高?

生物医学类专业一向是申请热门。最近几年&#xff0c;由于新冠疫情的原因&#xff0c;相关专业申请竞争更加激烈了。英国G5生物医学类专业IB成绩要求多高&#xff1f;话说&#xff0c;IB申请英国的生物医学类专业&#xff0c;需要做好哪些准备&#xff1f;英国大学的生物医学类…

Spring Data JPA使用Pageable 参数Thymeleaf 视图进行分页

在上一个教程中&#xff0c;我们看到了如何在Spring MVC控制器方法中使用参数。以下示例显示了如何将 Spring 数据分页与 Thymeleaf 视图一起使用。我们还将使用注释来更改默认页面大小。PageablePageableDefault 例 实体 package com.example;import jakarta.persistence.E…

VS系列多通道振弦温度采发仪的选型与开机操作

VS A B C D E VS&#xff1a;无线型振弦传感器采发仪 A&#xff1a;内嵌核心测量模块数量&#xff08;1~4 个&#xff09; B&#xff1a;两位数字表示的振弦通道数量&#xff08;02、04、08、16&#xff09; C&#xff1a;T 表示带有温度测量通道 D&#xff1a;是否有…

【能效管理】电力监控系统在移动某分公司配电系统中的应用分析

安科瑞 李亚俊 壹捌柒贰壹零玖捌柒伍柒 概述 在社会科技发展越来越快捷和便利的现在&#xff0c;对用电设施的管理和实时监视越来越重要。在用电过程中经常发生漏电、过流等现象。甚至照成断电现象&#xff0c;而及时查询故障并解决问题恢复用电也越发重要。 中国移动通信集…

LeetCode 278. 第一个错误的版本

&#x1f308;&#x1f308;&#x1f604;&#x1f604; 欢迎来到茶色岛独家岛屿&#xff0c;本期将为大家揭晓本LeetCode 278. 第一个错误的版本&#xff0c;做好准备了么&#xff0c;那么开始吧。 &#x1f332;&#x1f332;&#x1f434;&#x1f434; 一、题目名称 LeetC…

Python基础(十):列表的详细讲解

文章目录 列表的详细讲解 一、列表的应用场景 二、列表的格式 三、列表的常用操作 1、查找 2、增加 3、删除 4、修改 5、复制 四、列表的循环遍历 1、while 2、for 五、列表嵌套 六、总结 列表的详细讲解 一、列表的应用场景 思考&#xff1a;有⼀个⼈的姓名(TO…

菜狗杯Misc迅疾响应wp

一、原题 之前没接触过这种题型&#xff0c;所以记录一下 打开题目附件压缩包是一个图片&#xff0c;一看就不是常见的那种二维码&#xff08;甚至看起来有点不适……呜呜&#xff09;果然微信扫一扫也扫不出来。 二、工具和解题步骤 后来去看了官方wp&#xff0c;知道了一…

【Matplotlib绘制图像大全】(十七):散点图

前言 大家好,我是阿光。 本专栏整理了《Matplotlib绘制图像大全》,内包含了各种常见的绘图方法,以及Matplotlib各种内置函数的使用方法,帮助我们快速便捷的绘制出数据图像。 正在更新中~ ✨ 🚨 我的项目环境: 平台:Windows10语言环境:python3.7编译器:PyCharmMatp…

防火墙dmz实验

♥️作者&#xff1a;小刘在C站 ♥️每天分享云计算网络运维课堂笔记&#xff0c;一起努力&#xff0c;共赴美好人生&#xff01; ♥️夕阳下&#xff0c;是最美的&#xff0c;绽放。 ciscoasa> en Password: ciscoasa# conf t ciscoasa(config)# int e0/0 ciscoasa(co…

线程的概念+线程函数API

C线程 有关线程的简单实现 #include<stdio.h> #include<stdlib.h> #include<unistd.h> //定义线程函数&#xff08;固定&#xff09;--void * void *pth_fun(void *pth_arg){while(1){printf("pthread\n");sleep(1);}return NULL; } int main(){…

k8s学习笔记-完整版

文章目录第一章 kubernetes介绍应用部署方式演变kubernetes简介kubernetes组件kubernetes概念第二章 集群环境搭建环境规划集群类型安装方式主机规划环境搭建主机安装环境初始化安装docker安装kubernetes组件准备集群镜像集群初始化安装网络插件服务部署第三章 资源管理资源管理…

docker入门级使用

文章目录dockerdocker概述出现原因官网虚拟化与容器化docker架构图docker安装阿里云镜像加速底层原理Docker常用命令帮助命令镜像命令容器命令常用其他命令安装nginx安装Tomcatdocker 越学习越觉得自己的无知 谦卑,不傲慢,厚积而薄发 docker概述 出现原因 一次编译,到处报错开…

跨境电商如何减少客户流失率:成功的5种保留策略

关键词&#xff1a;跨境电商、客户流失率 经营一家跨境电商企业常常感觉就像一个漏水的容器。无论您在顶部倾注了多少客户&#xff0c;这始终是一个不断耗尽底部的百分比。 这被称为客户流失——它使可持续增长成为品牌面临的主要挑战。 客户流失与客户满意度密切相关。如果您的…

常见七大SMD器件布局基本要求,你掌握了几点?

SMD器件布局的一般要求 细间距器件推荐布置在PCB同一面&#xff0c;也就是引脚间距不大于0.65mm的表面组装器件&#xff1a;也指长X宽不大于1.6mmX0.8mm(尺寸编码为1608)的表面组装元件。 SMD器件的回流焊接器件布局要求 同种贴片器件间距要求≥12mil&#xff08;焊盘间&…

HTML+CSS大作业:旅游网页设计与实现——旅游风景网站6页HTML+CSS+JavaScript实训大作业 HTML+CSS大作业 HTML期末大作业

&#x1f468;‍&#x1f393;静态网站的编写主要是用 HTML DⅣV CSSJS等来完成页面的排版设计&#x1f469;‍&#x1f393;&#xff0c;一般的网页作业需要融入以下知识点&#xff1a;div布局、浮动定位、高级css、表格、表单及验证、js轮播图、音频视频Fash的应用、uli、下拉…