跳转至

05.数据类型

数值,文本,图像,音频,视频

变量

Text Only
var str="hello";
var number=1;

number

js不区分小数和整数

JavaScript
123 // 整数123
123.1 // 浮点数123.1
1.123e3 // 科学计数法
-99 // 复数
NaN // Not a number
Infinity // 无穷大

字符串

“abc”

'abc'

1.正常字符串使用单引号'abc'。

2.转义字符

Text Only
\'
\n
\u4e2d

3.多行字符串编写

Text Only
      let msg=
          `hello
          world
          ddd
          `;

4.模板字符串

Text Only
      let name='Cindy';
      let age=3;
      let msg1=`hello, ${name}`;

5.字符串长度

Text Only
console.log(msg.length);

6.字符串可变性不可变

image-20240111102348979

7.字符串其他函数

类Java

charAt

IndexOf

substring

replace

布尔值

true

false

逻辑运算

Text Only
&&
||
!

比较运算符

Text Only
=
== 等于(类型不一样,值一样可以为true,比较值)
=== 绝对等于(要求类型一样,值一样才为true)

这是JavaScript的缺陷,坚持不要用==比较

note

  • NaN===NaN为false,这个与所有的数值都不相等,包括自己,只能通过isNaN(NaN)来判断这个数是否NaN

浮点数问题

JavaScript
console.log((1/3)===(1-2/3));//false

尽量避免使用浮点数进行计算,存在精度问题

JavaScript
Math.abs(1/3-(1-2)/3)<0.00000001

null和undefined

null 空

undefined 未定义

数组

同一个数组可以存储不同类型的对象

JavaScript
var arr=[1,2,3,"hello",null,true];
new Array(1,2,3,true);

如果数组下标越界,就会得到undefined

array可以包含任意长度的数据类型

Text Only
var arr=[1,2,3,4,5,6]

1、长度

Text Only
arr.length

note:加入给arr.length赋值,数组大小就会发送变化

2、indexOf,通过元素获得下标索引

Text Only
arr.indexOf(0)
-1
arr.indexOf(1)
0
arr.indexOf(2)
1
arr.indexOf(3)
2

字符串“1”和数字1不同

3、slice()截取array的一部分,返回一个新的数组,类似string的substring

4、push和pop尾部

Text Only
push: 压入尾部
pop: 尾部弹出一个元素

image-20240112103026120

5、unshift(), shift()头部

Text Only
unshift压入尾部
shift弹出头部一个元素

image-20240112103121343

6、排序sort()

Bash
var arr=["C","A","B"]
undefined
arr.sort()
Array(3) [ "A", "B", "C" ]

var arr1=[1,4,2,5,2]
undefined
arr1.sort()
Array(5) [ 1, 2, 2, 4, 5 ]

7、元素反转reverse()

Text Only
var arr1=[1,4,2,5,2]
undefined
arr1.reverse()
Array(5) [ 2, 5, 2, 4, 1 ]

8、concat()

concat()没有修改数组,而是返回了一个新数组

Text Only
var arr=["C","A","B"]
undefined
arr.concat([1,2,3])
Array(6) [ "C", "A", "B", 1, 2, 3 ]

9、连接符join

Text Only
var arr=["C","A","B"]
undefined
arr.join("==>")
"C==>A==>B" 

10、多维数组

Text Only
var arr=[[1,2],[3,4],["5","6"]]
undefined
arr[1][1]
4 

对象

HTML
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Basic</title>
    <script>
      let student={
        id:1001,
        name:"lucy",
        course:["blockchain","javascript"]
      };
      console.log(student.name);
      console.log(student.course);
    </script>
</head>
<body>

</body>
</html>

定义对象

Text Only
      var person={
          name:"Cindy",
          age:18,
          email:"cindy@gmail.com",
          score:100
      }

js中对象,{.....} 表示一个对象,键值对描述属性 xxxx: xxx,多个属性之间使用逗号隔开,最后一个属性不加逗号! JavaScript中的所有的键都是字符串,值是任意对象! I

1、对象赋值

Text Only
person.name
"Cindy"
person.name="Lucy"
"Lucy"
person.name
"Lucy" 

2、不存在的对象属性不会报错,返回undefined

Text Only
person.number
undefined 

3、动态删减属性delete

Text Only
person
Object { name: "Lucy", age: 18, email: "cindy@gmail.com", score: 100 }

delete person.score
true
person
Object { name: "Lucy", age: 18, email: "cindy@gmail.com" }

4、动态添加属性

Text Only
person
Object { name: "Lucy", age: 18, email: "cindy@gmail.com" }

person.phone=251829129
251829129
person
Object { name: "Lucy", age: 18, email: "cindy@gmail.com", phone: 251829129 }

5、判断属性值是否在这个对象中

Text Only
"school" in person
false
"name" in person
true 

6、判断一个属性是否是这个对象自身拥有的hasOwnPreperty()

Text Only
person.hasOwnProperty("name")
true
person.hasOwnProperty("hometown")
false 

Map和Set

es6新特性

map键值对

Text Only
      let map=new Map(
          [
              ["cindy",100],
              ["lucy",90],
              ["tom",80]
          ]
      );
      let name=map.get("cindy");
      map.set("admin",90);
      console.log(map);//Map(4) { cindy → 100, lucy → 90, tom → 80, admin → 90 }

set无序不重复的集合

Text Only
    let set=new Set([1,2,3,4,2,2,1,1,2]);
    console.log(set);// [ 1, 2, 3, 4 ]
    set.add(5);// [ 1, 2, 3, 4, 5 ]
    set.delete(4);// [ 1, 2, 3, 5 ]