JavaScript数据类型
1.JavaScript判断数据类型
typeof操作符
使用typeof操作符可以返回变量的数据类型
typeof操作符有带括号和不带括号两种用法
typeof (变量名)typeof 变量名
typeof的值有:1.number 2.string 3.BOOlean 4.null 5.undefined 6.Symbol 7.Array 8.Object function
2.基本数据类型
1.number 2.string 3.BOOlean 4.null 5.undefined 6.Symbol
1.数字型 typeof=‘number’
var num=1console.log(typeof num) //number
2.字符串类型 typeof=‘string’
var str='我是小白'console.log(typeof str) //string
3.布尔型 typeof=‘Boolean’ 布尔型有两个值 true/false
var flag1=truevar flag2=falseconsole.log(typeof flag1)//trueconsole.log(typeof flag2)//false
4.Null 类型
表示一个 ‘空’ 值 不存在任何值 用来定义空对象指针
使用typeof操作符查看Null的类型为Object,说明Null其实是属于Object的一个特殊值,所有将变量赋值为Null我们可以创建一个空的对象
var n=nullconsole.log(typeof null) //Objectn是一个空对象
5.undefined类型
undefined类型也是一个只有一个值的特殊数据类型 表示未定义 就是我们声明了一个变量未给它赋任何值,这个变量的默认值就是undefined
var strconsole.log(str) //输出undefined
使用typeof操作符查看声明未赋值和未声明的变量时 返回的值都是undefined
var a;console.log(typeof a); //undefinedconsole.log(typeof b);//undefined
但使用声明未赋值和未声明的变量时 声明未赋值的变量值为undefined 使用未声明的变量时会报错
var a;console.log( a); //undefinedconsole.log( b);//报错 b is not defined b未定义
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TlJfqmP4-1668586067735)(C:/Users/pc/AppData/Roaming/Typora/typora-user-images/image-1116135010922.png)]
6.symbol类型
symbol是Es6中引入的一种新的数据类型 表示独一无二的值,symbol类型的值需要用Symbol()函数生成常用来模拟对象的私有属性和方法
var str='我是小白'var sym1=Symbol(str)var sym2=Symbol(str)console.log(sym1)console.log(sym2)console.log(sym1==sym2) //false//虽然sym1 sym2 看起来一样,实际他们不一样 Symbol的特点是每个值都是独一无二的值
使用Symbol定义的数据 自己和自己相等
var str='我是小白'var sym1=Symbol(str)console.log(sym1==sym1) //true
2.引用类型
7.Array 8.Object function
7.Array数组类型
Array(数组)是一组按顺序排列的数据的集合,数组的每一个值都称为元素,并且数组里可以包含的值是任意类型的数据,定义数组是使用[],数组中的每一个值用逗号分隔
var arr=[1,'我是个小白',true,null]console.log(arr) //[1,'我是个小白',true,null]
数组中的元素可以通过索引来访问,索引从0开始依次累加
var arr=[1,'我是个小白',true,null]console.log(arr[0]) //1 console.log(arr[1])//我是个小白
8.Object类型
Object(对象)类型数据是一组由键,值组成的无序的数据集合,定义对象类型的数据需要使用{} 或者使用Object函数
var obj={key:value}var person={name:'小白',age:18,height:180}//name,age,height为person对象中的键 小白,18,180 为person对象的值
获取对象的某个值 对象名.key
console.log(person.name);
获取对象的所有属性名 Object.keys(对象名)
console.log(Object.keys(person));
获取对象的所有属性值 Object.values(对象名)
console.log(Object.values(person));
遍历获取对象的属性名和属性值
for(var key in person){console.log(key);console.log(person[key]);}
9.function类型
函数是是一个特定功能的代码块 函数可以被事件调动 也可以被JavaScript直接调用
声明函数语法:
function 函数名(形参){console.log(形参)}//使用函数 传入实参函数名(实参)
function sayhi(name){return 'hi'+name}var res=sayhi('小白')concole.log(res) //hi小白
3.基本数据类型与引用数据类型的区别
基本数据类型
基本数据类型的值直接存储在栈内存中
值与值之间是独立的 ,修改一个变量不会影响其他变量
var a=1;var b=a;a++;console.log(a,b) //2 1
引用数据类型
引用数据类型是存储在堆内存中的对象
变量其实是保存在栈内存中的一个引用指针(保存的引用指针是堆内存中的引用地址标识)通过这个引用指针可以快速找到保存在堆内存的对象
var a={name:'小白',age:'18'}var b=ab.age='20'console.log(a) //{name:'小白',age:'20'}
把a赋值给b,等于a的内存指针就指向b,现在a和b指向的是同一个引用指针,所以改变b的age也就相当改变了a的age