java script 加法重载,后台编程语言互相争执,为何前端公认JavaScript?

本文探讨了JavaScript与Java在运算符、逻辑判断、比较运算和函数定义等方面的异同。JavaScript允许不同类型变量间的运算,如100与true相加得到101,而Java会抛出错误。在函数定义上,JavaScript更灵活,无需明确返回值和参数类型,且不存在方法重载。此外,JavaScript中的arguments对象可以接收任意数量的参数。
摘要由CSDN通过智能技术生成

今天是刘小爱自学Java的第80天。

感谢你的观看,谢谢你。

话不多说,开始今天的学习:

9d9bff332ce38d1b6e297429b3be58ad.png

JavaScript是一门编程语言,但凡是编程语言,其在基本语法上都是大同小异的。

我们学了Java,那么再学习其它语言时,学它不同于Java的地方即可,这样也能更好地记忆。

一、js中的运算符

1算术运算符

比如加减乘除,取模,自增自减这些,和Java都是一样的。

但js中的运算也有和Java的不同之处;

a3cb920774426a18d65fa24af4d69038.png

变量之间的运算

在js中,不同数据类型之间的变量也能参与运算。

100和true相加结果竟然是101,这个在Java中会直接报错的,因为不确定结果是什么数据类型。

所以在js中,true参与运算时就相当于数字1,同理false就相当于数字0,null也是相当于数字0

undefined类型参与运算

变量c没有定义,所以是未定义类型,当其参与运算时得到的结果为NaN。

未定义类型和非字符串任意类型运算时,得到的结果都是NaN。

NaN,全称not a number,也就是不是一个数字。

string类型参与运算

这个和Java中倒是一样,任意类型和string类型相加时,结果都是拼接。

但是String在Java里面是引用数据类型,而在js里面是基本(原始)数据类型。

2逻辑运算

关于逻辑运算符:与(&&)、或(||)、非(!)和Java中是一样的。

但在js中的逻辑判断与Java有些不同:

7d5499da99a46f00aa370fe8f4cf07d4.png

布尔表达式

这个也就和Java中一样,逻辑判断为true时结果为真,逻辑判断为false时结果为假。

数字作为布尔表达式

在js里面,数字也有自己的逻辑判断:

当数字不为0时,逻辑判断为true;

当数字为0时,逻辑判断为false。

字符串作为布尔表达式

当字符串不为空时,逻辑判断为true;

当字符串为空时,逻辑判断为false。

此外,未定义数据类型逻辑判断也为false,在算术运算中的NaN作为逻辑判断时也为false。

我就不一一演示了。

3比较运算符

其中js中的赋值运算符(=、+=、-=、*=、/=、%=)和Java中一样。

比较运算符(==、!=、=)也和Java中一样,但js有两个个特殊的比较运算符:

aeb757bb33938e7744d297a58c9a5b8b.png

字符串与数字比较

在js中,字符串也能参与比较,会先将其转换成数字再进行比较。

==,等于,比较的是值是否相等。

===,恒等于,比较的是值和类型均相等。

null与未定义比较

同样的道理,它们的值相等,都为null,但是类型不一样,所以不恒等于。

4三目运算符

也就是Java中的三元运算符。

二、js中的函数

1函数定义

js中的函数其实也就是Java中的方法。

94115acc82174151f6d8c8569996c82d.png

Java中的方法

做一个回顾,Java方法格式:修饰符+返回值+方法名+(参数列表)+;

其中参数列表中要明确数据类型。

js中的函数

js函数格式:fuction+方法名(参数列表){};

js中不仅没有修饰符,连返回值都没有,并且参数列表的数据类型不用明确。

由此可以看出:js的语法相对于Java而言较为随意,不像Java那么严谨,但确实简便了很多,方便学习。

2实参和形参

实参:调用函数时的参数(传入的具体数值)。

形参:定义函数时的参数(自定义的变量)。

Java中形参与实参要明确保证一致(数量、数据类型都要保证一致)

但是js中可以不一致,我们逐一分析:

768a66be9d56e1a9746ab8616058d355.png

实参与形参数量不一致

实参与形参的关系相当于将实参的值赋给形参。

当实参比形参要少时:a=1;b=2,但是c未定义。

在js中任何数据与未定义的变量相加都是NaN。

当实参和形参一样或者多时,结果没有影响,多的实参不参与运算即可。

形参和方法体中的变量不一致

如果方法体中的变量要少,有几个就用几个。

如果方法体中的变量要多,多了一个形参中没有的变量d,则无法运行。

这个Java中倒是有一定的相似之处。

3参数arguments

事实上在js中有一个专门的数组arguments,用来接收调用时的实际参数:

9b73011f065661bbd79ee65ca53a855d.png

js中的数组是可变的,所以可以使用这种方式来接受,当然也可以使用for循环来处理。

不过要注意的是,js中可没有增强for循环。

老实说,对于arguments这个概念,其实也就相当于是实际参数,知道在js中有它的存在即可。

我个人对于实参和形参的理解,就是将实参赋值给形参再参与运算,这样方便记忆也好理解。

4返回值和方法重载

90306848ac41be65d6c09e71a99c7d57.png

返回值

js在定义函数时是不用说明返回值的,如果有返回值,直接return即可。

方法(函数)重载

在Java中是有方法重载(同名不同参)

但是在js中是没有方法重载的。

这也好理解,在Java中参数类型不同,个数不同即代表不同的参数。

但是在js中参数类型都没有明确定义,所以也没法区分参数不同,并且实参个数与形参个数没有关系。

其中,js代码是从上到下执行的,同名函数,后面的函数会覆盖前面的函数。

5局部变量和全局变量

99acfb277b10122c7171dedbf5a652d5.png

函数内测试局部变量

函数内部,局部变量和全局变量都可以访问。

函数外测试全局变量

在函数外部,局部变量是不能被访问的,但是全局变量可以访问。

另一个script标签

和函数外部一样的道理,通过我们可以得出结论:变量c是一个全局变量。

事实上,当局部变量省略了var的时候,会变成全局变量。

为什么会这样?画图分析:

0f0f93af035f2cddb0611cd447f2d1fe.png

也就是说实际上变量c省略了var,就相当于默认在外部定义了var c,再在函数内赋值。

当然其前提是该变量没有在函数内被定义,如果变量c在函数内定义过了,那它就是个局部变量。

测试思考

我发现明明a,c都是全局变量,a,c中间加了一个b后,c就不能打印了。

也就是说外部是没法引用局部变量的,会报错。

但是js中报错了照样能运行,只是当前标签内后面的代码就不执行了。

最后

谢谢你的观看。

如果可以的话,麻烦帮忙点个赞,谢谢你。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
GeoPandas是一个开源的Python库,旨在简化地理空间数据的处理和分析。它结合了Pandas和Shapely的能力,为Python用户提供了一个强大而灵活的工具来处理地理空间数据。以下是关于GeoPandas的详细介绍: 一、GeoPandas的基本概念 1. 定义 GeoPandas是建立在Pandas和Shapely之上的一个Python库,用于处理和分析地理空间数据。 它扩展了Pandas的DataFrame和Series数据结构,允许在其中存储和操作地理空间几何图形。 2. 核心数据结构 GeoDataFrame:GeoPandas的核心数据结构,是Pandas DataFrame的扩展。它包含一个或多个列,其中至少一列是几何列(geometry column),用于存储地理空间几何图形(如点、线、多边形等)。 GeoSeries:GeoPandas中的另一个重要数据结构,类似于Pandas的Series,但用于存储几何图形序列。 二、GeoPandas的功能特性 1. 读取和写入多种地理空间数据格式 GeoPandas支持读取和写入多种常见的地理空间数据格式,包括Shapefile、GeoJSON、PostGIS、KML等。这使得用户可以轻松地从各种数据源中加载地理空间数据,并将处理后的数据保存为所需的格式。 2. 地理空间几何图形的创建、编辑和分析 GeoPandas允许用户创建、编辑和分析地理空间几何图形,包括点、线、多边形等。它提供了丰富的空间操作函数,如缓冲区分析、交集、并集、差集等,使得用户可以方便地进行地理空间数据分析。 3. 数据可视化 GeoPandas内置了数据可视化功能,可以绘制地理空间数据的地图。用户可以使用matplotlib等库来进一步定制地图的样式和布局。 4. 空间连接和空间索引 GeoPandas支持空间连接操作,可以将两个GeoDataFrame按照空间关系(如相交、包含等)进行连接。此外,它还支持空间索引,可以提高地理空间数据查询的效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值