🍑运算符
JS和运算符有很多是和java是相似,这里我们就不再一一列举,下面我们只说不同点
不同点1
不同点2
重点在于,比较 相等/不相等 的 符号。
JS中比较相等的符号,有两种:
== 和 ===
不相等的符号也有两种:
!= 和 !==
== 和 != 是一组风格、
=== 和 !== 是一组风格。
————————————————
先说, == 和 != 这一组。
只是比较两个变量的值,不比较 两个变量的类型。
如果两个变量能够通过隐式类型转换,转换相同的值,
那么,此时就认为 两个变量 是相等的。
再来看,=== 和 !== 这一组。
既要比较 两个变量的值,又要比较两个变量的类型。
如果类型不相同,就直接认为两个变量不相等。
比较的过程中,就不存在隐式类型转换的说法。
🌰栗子
注意哦!这里和 java的 equals 是不一样的!
在java中,重写后的equals 是 比较值。
重写前的equals和== 是比较身份——在内存中的储存位置
而且 equals 涉及到对象的比较。
谈到对象的比较,有三个维度的比较
1、比较身份(比较地址,看是不是同一个对象)【JS中没有比较身份的函数】
2、比较值(标对对象中存储的数据是否相同)
3、比较类型(两个对象的类型是否是同一个类型)
在Java中的 instanceOf 就是比较类型的。
🍑数组
温馨提示,JS的数组与java、c中的传统数组相比,是有很大差异的——这可能会颠覆你以往对数组的认知
1、创建数组
此外我们的JS数组,还可以这么写
什么类型的元素,都可以往里面放。
这是 Java 普通数组所做不到的,需要借助数据结构才能实现。
但是 一般也不是这么用,都是会指定一个类型放入数组中。
有的人可能会问:这是一个什么类型的数组?
我只能说兄弟们格局小了!
没有什么类型,这就是一个数组。
在 JS 中,只有一种数组,就叫做数组,里面的元素可以是不同类型的!
另外,JS 中数组,是不分类型的,并且无法强制要求数组只能放入一种类型的数据。
要想数组里存入的都是同一种类型的数据,就只能通过“人为”的方式去完成。
就是 你给这个数组的元素都是 同一种类型的。
而且,还没完!
JS 中数组的元素,还可以是数组类型的元素
🍑打印数组
这个没什么好说的,通过console.log来打印
🍑获取数组元素
这是不是就已经很离谱了,但下面还要更离谱的
离谱+1
离谱+2
相信大家也能猜到,这样写其实是有一定的风险的
🍑JS数组中的一些操作
获取数组长度
通过.length来获取,这个和Java的操作基本相同,我们刚才也一直在用
但要注意这里我们的数组长度length是可以随时更改的
往数组中新增元素
删除+替换操作
JS中删除数组中的元素,所依赖的方法,非常厉害。
该方法叫做 splice,这个方法,准确的说是针对 数组中的某个片段,进行替换。
所以,这个方法既可以用来插入元素,又可以用来删除元素
🍑函数
1、函数的简单使用
首先,大家要明白,JS中的函数(function),在 Java中 叫做 方法(Method)。
注意!函数就是方法,方法就是函数,两者就是同一个东西,只是叫法不同而已
通常情况下,我们不需要考虑这两个概念的具体区别
a demo
上述代码中,有两个点需要我们注意
首先,我们要知道,JS是动态类型的语言,所以我们并不关注参数的类型
其次你会发现,好像在JS中,参数个数也没有要求
正因为如此,所以JS也不需要有泛型和重载这样的语法,但这种灵活性,往往并不是好事
有了这个特性,我们只用写一个add函数就能完成N个数相加的功能了
那么我们如何来解决这个问题呢?
2、函数表达式
在 JS中,函数是 “一等公民”。
一等公民:一个“一等公民”的函数,函数可以像一个普通的变量一样,赋值给 其他的变量。同时,可以作为另一个函数的参数,还可以作为另一个函数的返回值。
简单来说:函数和普通的变量,并没有本质区别。
只不过函数这个变量,相对于普通变量来说,多了一个功能(可调用)。
所谓的函数表达式,其实就是把一个函数赋值给一个变量了
3、作用域
🍑JS对象
基本概念
对象,就是一些属性 和 方法的集合。
这个概念,与传统意义上的Java对象的概念是类似的。
但是有一个比较大的区别。
在 Java中,我们的对象是需要先有类,然后针对类进行实例化才能产生对象。
等于就是说,类就是一个模具,可以批量生产相同规格的产物。
而在 JS 中,对象 是不依托于 类的。
就是说:在 JS 中,无需借助类,就能创建一个对象。
另外,Java 中的类,可以视为是一种 自定义类型的类。
例如: Cat 类 和 Dog 类,是两个不同类型。
但是在 JS 中,所有的对象,都是一个类型【object类型】。
1、对象的创建和使用
在 js 对象中,我们可以很直观的看到 js的对象是有方法 和 变量。
js的对象,与其说是一个对象,不如说是一个 键值对 结构 更加合适。
js对象中的每个属性和方法,其实都是通过“键值对” 这样的方式来表达的。
- {} 表示这是一个对象
- 键值对之间,采用 逗号 进行分割。
- 键和值之间,采用 冒号 进行分割。
定义出这样的一个对象之后,我们就可以采用 student.属性名 / 方法名 的方式 来进行访问了。