js数据类型分为基本数据类型和引用数据类型
基本数据:未定义undefined、数字Number、布尔值Boolean、空值null、字符串String、Symbol
引用数据:数组Array、对象Object、函数Function
一、undefined
即未定义的或者定义了变量却没有初始化
var a
console.log(a) //a未定义,打印undefined
undefined的意义:为了程序的安全而设定的一种数据
二、number
与学生时代的所学的运算不同,学生时代是1+1=2,而在这里为2=1+1
var a1=10
a1=20
a1=a1+1.2 //先给a1取值20,然后再与1.2做加法,运算结果赋值给左侧的a1
console.log(a1) //21.2
js不适用于科研运算,可以用作一般互联网产品,因为运算有精度
console.log(1.3 + 1.4) //2.7
var a = 10
var b = 20
var c = a + b //30
var c=a-b //-10
var c=a*b //200
var c=a/b //0.5
var c=a%b //10除以20取余 10
console.log(c)
保留小数点后几位
var r=3.1415926
var s=r.toFixed(3) //遵循四舍五入
console.log(s) //3.142
若要求小数点后最后一位为0时则舍弃,用该写法可以实现
var a = 1230000
var b = 1000
var c = a / b
var d = c.toFixed(2) / 100 * 100
//先得到保留两位小数的值,后面的运算不受toFixed限制,因此遵循正常的保留,末尾为0自然舍去,不为0保留
console.log(d) //1230
其他的一些功能函数
var a = 78.23
var b = Math.ceil(a) //向上取整数
console.log(b)
var a = 19.89
var c = Math.floor(a) //向下取整数
console.log(c)
var a = 67.49
var c = Math.round(a) //四舍五入取整数
console.log(c)
三、布尔值Boolean
boolean数据只含有true和false
var a=true
var b=false
true、false就是关键字,代表布尔值
多用于进行判断
var a="24"
var b="27"
console.log(a>b)
var b=true //b为true,打印6666
var b=false //b为false,不打印
if(b){
console.log(6666)
}
if(100<18){ //100<18为布尔表达式,表达的结果就是布尔值
console.log("已成年")
}
四、null
null这种类型的数据只有null,与undefined类似
var a=null;
var b;
console.log(a) //空
console.log(b) //undefined
null的意义:它代表了一个变量是有数据的,只不过没有写业务数据
五、字符串String
var a="hello" //字符串的双引号不是字符,是一种为了跟变量名做区分的标记
var b=a //不加""为变量取值操作
字符串既可以是双引号,也可以单引号,还可以反引号
var r='he"ll"o'
var q='hello'
var w="hello"
var t="h'el'o"
var y='h'el'lo' //机器从前往后读,不能分清哪两个单引号是一对,不可以这样写
字符串还可以通过“+”进行拼接
var a="hello"
var b="world"
var c=a+b
//如果a或者b有任意一个字符串,就会把另外一个不是字符串的数据转化为字符串,然后进行拼接
//var a=10
//var b=person
//var c=a+b
//console.log(c) //10person 这里的10是字符串,不是数字
console.log(c) //helloworld
六、Symbol(ES6中新出现的)
Symbol生成的值具有唯一性,就算括号内的值相同,也不相等
let n1=Symbol("name");
let n2=Symbol("name");
console.log(n1==n2) //false
七、数组Array
数组是一堆数据的集合,数组可以保存很多数据,且数据的类型是不限定的,我们将数组中的每一个数据称为元素,每一个元素用逗号隔开
var arr=[1,"hello",null,undefined,function(){},[1,2,3]]
数组如何取元素?
通过下标取值,从0下标开始往后数
var arr=[1,34,67,"hello",99]
console.log(arr[2]) //67
var arr1=[23,44,23,[89,333,10],"good"]
var a=arr1[3][1]
console.log(a) //333
var arr2=[1,[2,[3,4,5],4]]
var b=arr2[1][1][2]
console.log(b) //5
var arr3=["元素1",["元素2","数据",null]]
console.log(arr3[1][1]) //数据
八、对象Object
对象(object )跟数组一样,用来保存数据的且都可以保存任意类型的数据,只不过每一个数据都自己设计"下标"(键值对的键)
var obj={name:"Niko",age:19}
var a1=obj["name"]
console.log(a1) //Niko
var a2=obj["age"]
console.log(a2) //19
在对象中,如果这个对象中存在 一个属性,当我们又给这个属性赋值的时候,会覆盖之前的值,如果赋值时不存在这个属性,会添加新成员,并赋值
var obj={name:"Niko",age:20}
obj["age"]=22
console.log(obj) //{name: 'Niko', age: 22}
obj["phone"]=123456 //原obj中没有phone属性,这里的操作会在obj中添加phone属性
console.log(obj) //{name: 'Niko', age: 22, phone: 123456}
注:对象的成员有一种简便写法(语法糖)
var obj={name:"TeaY"}
console.log(obj.name} //obj.name相当于obj["name"] TeaY
九、函数Function
函数的写法为:function关键字小括号 大括号
function fn(){}
定义函数有两种方式,声明式和表达式
var fn = function(){} //函数表达式
function fn(){} //函数声明式
函数不会自己运行大括号中的代码,需要调用,调用就是让函数运行起来,并且调用一次运行一次
function fn(){
console.log(123)
}
fn() //第一次调用打印123
fn() //第二次调用打印123
函数是一种非常特殊的对象(引用数据) ,因此 typeof检测函数的结果不再是object 而是function
var a = function(){}
console.log(typeof a) //检测结果为function
Ⅹ、typeof(特殊操作符)
typeof用于区分变量中保存的数据类型
var a = 70
var b = "66"
console.log(a)
console.log(b)
var re=typeof(a)
var ree=typeof(b)
console.log(ree) //string
console.log(re) //number
var re1=typeof(999)
console.log(re1) //number
var re2=typeof("hello")
console.log(re2) //string
var re3=typeof(null)
console.log(re3) //object
var re4=typeof(undefined)
console.log(re4) //undefined
var re5=typeof(true)
console.log(re5) //boolean
var re6=typeof(function(){})
console.log(re6) //function
var y=x+20
var z=typeof(y)
console.log(z) //string