一、JS数据类型
5种基本数据: number null undfined boolean string
1种引用数据:object对象(函数 数组 时间 标签等等)
1、undefined
未定义,或者定义了变量但是没有初始赋值,为了程序的安全而设定的一种数据
var a;
console.log(a)//undefined 未定义,或者是定义了变量但是却没有初始化
a=20
console.log(a)
2、数字 number
表示整数和浮点数值,有精度问题,问题不大,忽略不计
a.toFixed(2) a保留两位小数
c.toFixed(2)/100*100 去掉保留两位小数的小数位0
b=Math.ceil(a) 向上取整数
c=Math.floor(a) 向下取整数
c = Math.round(a) 四舍五入取整数
~~c 取整,不常用
数字类型的数据有整数,浮点数等
var n1=20
n1=100
n1=n1+1.2// n1取值100 然后把100跟1.2做加法运算 然后把运算的结果赋值给n1
//学生时代数学中 2+3=5
console.log(n1)
// js不能用于科研运算 可以用作一般互联网产品 因为运算有精度
console.log(0.1+0.2)
var a=7
var b=3
var c=a%b //求余取模20除以3 整除了之后剩余多少 //a/b//a*b//a-b//a+b
console.log(c)
var a=3.01833//3.141592
var b=a.toFixed(2)
console.log(b)
var a=1230000
var b=123
var c=a/b
var d=c.toFixed(2)/100*100
console.log(d)
~~c
var a=100.45
var b=Math.ceil(a)//向上取整数
console.log(b)
var a=100.75
var c=Math.floor(a)//向下取整数
console.log(c)
var a = 100.35
var c = Math.round(a) //四舍五入取整数
console.log(c)
// 有高薪意向的同学 学习这几个函数的后面的参数
3、布尔数据 boolean
两种数据true和false(true为1,false为0)
true和false都是关键字,代表布尔值
布尔表达式用得多,true和false就是布尔表达式的结果
<script type="text/javascript">
//布尔数据 boolean
var a=true
var b=false
// true/false就是关键字 代表布尔值
// 100>18 就是布尔表达式 它的表达的结果是布尔值
var c=20//c变量中保存的数字 数字这种类型的数据有很多:100 200 10.2 3.14
if(b){
console.log(6666)
}
if(100<18){
console.log("可以喝酒")
}
</script>
4、null 空
null 这种类型的数据只有一个数据就是null,它代表了一个变量是有数据的(占位),只不过现在还没有写业务
<script>
null //空这种类型的数据只有一个数据就是null;
var a = 200;
a=400;
a=null;
var b;
console.log(a)
console.log(b);
//null 的意义==>它代表了一个变量是有数据的 只不过还没有写业务数据
//undefined的意义==>为程序的安全而设定的一种数据
console.log(hqyj)
</script>
5、String 字符串
两个变量相加时,只要有一个是字符串类型,相加就是将另一个不是字符串的转成字符串然后进行字符串拼接
var a=“hello” 字符串的双引号不是字符 是一种标记为了跟变量名做区分
var a=‘he"l"lo’ 字符串可以是单引号 也可以是双引号 还可以是反引号(es6),内双外单,内单外双
var c=a+b 如果a或者b有任意一个是字符串 就会把另外一个不是字符串的数据转化为字符串然后拼接
<script>
// 变量中可以保存什么数据?
// 5种基本数据: number null undfined boolean string
var a="hello"//字符串的双引号不是字符 是一种标记为了跟变量名做区分
var b=a
console.log(a)
var a='he"l"lo'//字符串可以是单引号 也可以是双引号 还可以是反引号(es6)
var a='he"l"lo'
var a="he'l'lo"
console.log(a)
var a="hello"
var b="hqyj"
var c=a+b
console.log(c)
var a=100
var b="200"
var c=a+b// 如果a或者b有任意一个是字符串 就会把另外一个不是字符串的数据转化为字符串然后拼接
console.log(c)
</script>
6、引用数据
引用数据是什么?
引用数据类型:一个大型的复杂的基本数据和引用数据的"集合体"
基本数据:
var b=a //动态运行流程==>第一步 先声明一个变量叫b,第二步先取a变量中保存的值,第三步把取到的20赋值给b
引用数据:
var b=a//动态运行流程==>第一步 先声明一个变量叫b,第二步把变量a对应的引用数据的内存空间让b变量也去引用
// 基本数据:
var a=20
var b=a//动态运行流程==>第一步 先声明一个变量叫b,第二步先取a变量中保存的值,第三步把取到的20赋值给b
console.log(b)
b=200
console.log(a)
// 引用数据类型:一个大型的复杂的基本数据和引用数据的"集合体"
var a=[10,20,30]
var b=a//动态运行流程==>第一步 先声明一个变量叫b,第二步把变量a对应的引用数据的内存空间让b变量也去引用
// console.log(a)
// console.log(b)
// console.log(b[1])
b[1]=200
console.log(b)
console.log(a)
(1)数组
数组:
- 数组就是引用数据类型的
- 保存的元素用逗号隔开
- 数组取元素是通过下标取值的 从0下标开始的
- 数组中可以保存很多数据,每一个数据的类型是不限定的
var arr = [10, 20, 30, 500, 200,"hello",18,null,true,undefined]
var n1 = arr[3]
console.log(n1)
var n2 = arr[0]
console.log(n2)
- 如果知道数组中有一个元素 但是不知道它的下标,可以直接打印数组
console.log(arr[8])
var arr=["hello",20,,,100]
// arr[2]="h5"
console.log(arr)
- 数组是一种引用类型的数据,它是用来保存数据的,它也可以保存数据
var arr=[200,"hello",[10,20,30],400]
console.log(arr[0])
console.log(arr[1])
console.log(arr[2])
var arr2=arr[2]
var re=arr2[2]
console.log(re)
console.log(arr[2][1])//"hello"?
var arr=[10,[10,[10,200]]]
console.log(arr[1][1][1])//200
var arr=[["导航1","导航2"],["分类1","分类2"]]
var re=arr[1][0]
console.log(re)//分类1
(2)对象-object
- 跟数据一样 用来保存数据的 只不过每一个数据都自己设计"下标"(键值对的键)
- 可以保存任何类型的数据
var obj1={name:"karen",age:24}
console.log(obj1)
var a1=obj1["name"]
console.log(a1)
var b1=obj1["age"]
console.log(b1)
obj1["age"]=25
console.log(obj1)
var obj2 = {
name: "jack",
age: 25,
books: ["js", "css", "ts"]
}
// console.log(obj2["age"])
// console.log(obj2["books"])
console.log(obj2["books"][2])
-含有变量的取值
通过成员名去取值
取值obj[“name”]<>obj.name(语法糖)
var name=“x”
obj[name]=“ss”<>obj.x name是变量,需要去取值
笔试题:
给对象添加属性
var a=20
var arr=["a",200]//取a的值存到数组的下标0的位置
console.log(arr[0])//
var obj3={name:"jack"}
obj3["name"]="karen"//如果已经有这个属性了 就会覆盖之前的值
obj3["age"]=25//如果没有age成员 就会添加一个新成员age 然后赋值25
var a="Jiang"
var b="firstname"
obj3[b]=a//obj3["firstname"]="Jiang"//补一行代码,要求是b必须使用到变量a和b
console.log(obj3)//{name:"karen",age:25,firstname:"Jiang"}
- 语法糖,对象取成员的简便方法
obj["name"]<===>等价于obj.name
(2)函数-function
- 函数的写法 function关键字小括号 大括号,函数不会自己运行大括号中的代码
function() { } - a() 函数的调用==>让大括号的代码运行起来 而且调用一次就会运行一次
var a=function() {
console.log(6666)
}
a() //运行函数
- 引用数据 就是一个内存空间(就是一个数据容器)
var fn = function() {
console.log(123)
}
// fn["hqyj"]=666
fn.hqyj=666
fn()
console.log(fn.hqyj)
- 函数是一种非常特殊的对象(引用数据) 因此 typeof检测函数的结果不在是object 而是function
var f1=function () {
}
console.log(typeof f1)
var f2=function() {
}
f2.age=200
var f3=f2
f3.age=100
console.log(f2.age)
- 函数声明了不会直接运行,必须调用了才能运行
二、检测一个变量中保存的数据是什么类型的数据–typeof
对一个值使用 typeof 操作符可能返回下列某个字符串:
- “undefined”——如果这个值未定义;
- “boolean”——如果这个值是布尔值;
- “string”——如果这个值是字符串;
- “number”——如果这个值是数值;
- “object”——如果这个值是对象或 null;
- “function”——如果这个值是函数。
typeof的返回值都是字符串数据类型
var re=typeof(a)
console.log(re)
var re=typeof(200)
console.log(re)
var re2=typeof("hello")
console.log(re2)
var re3=typeof(null)
console.log(re3)
var re4=typeof(undefined)
console.log(re4)
var re5=typeof(true)
console.log(re5)
var re6=typeof(function(){})
console.log(re6)
2021年秋招题:
考点:typeof的返回值都是字符串数据类型
// 2021年秋招的
var a=100
a=a+21
var b=a%19
var re7=typeof(b)
// 选择题 re7变量的数据类型是什么?
console.log(re7)//取出变量re7的值 并打印
var re8=typeof(re7)
console.log(re8)//取出变量re8的值,也就是re7的数据类型 并打印
var b=a+20
var re=typeof(a)
console.log(re)
总结
js的五种基本数据类型:undefined、number、null、boolean,string
一种引用数据:可以是数组,对象,函数
检测一个变量中保存的数据是什么类型的数据–typeof
typeof的返回值都是字符串数据类型