JavaScript数据类型


前言

JavaScript中有6种数据类型,分别为string,number,boolean,null,undefined,和object类型,前5种为基本数据类型,在栈内存中存储,object为引用数据类型,在堆内存中存储


一、JavaScript中的六大数据类型

1.字符串类型(String)

在js中字符串使用引号(单引号/双引号)引起来,引号不能混用
双引号不能嵌套双引号,单引号不能嵌套单引号,双引号可以嵌套单引号,单引号可以嵌套双引号
var str1="hello";
var str2='hello'; 
console.log(str1);//hello
console.log(str2);//hello
var str3="he'll'o";
console.log(str3);//he'll'o
var str4='he"ll"o';
console.log(str4);//he'll'o
转义字符 \
字面量含义
\""
\’
\n换行
\t制表符(一个Tab)
\\\
  console.log("\\");// \
  console.log("\"");// "
  var str="javascript";
  console.log(typeof str);//string
  console.log(str.length);//10

2.数值类型(Number)

在js中所有的数值都是number类型,包括整数和浮点数(小数)

js中可以表示的数字的最值

 console.log(Number.MAX_VALUE);//1.7976931348623157e+308
 console.log(Number.MIN_VALUE);//5e-324,注:该值为大于0的一个数

如果使用number表示的数字超过了最值,则会返回Infinity、-Infinity

-infinity正常显示-00正常显示infinity
num<=-1.7976931348623157e+308-1.7976931348623157e+308<num<-5e-324-5e-324<num<00<=num<=5e-4235e-423<num<1.7976931348623157e+308num>=1.7976931348623157e+308
        console.log(1.7976931348623157e+608);//infinity
        console.log(-1.7976931348623157e+608);//-infinity
        console.log(-5e-330);//-0
        console.log(5e-400);//0
        //isFinity()检查一个数是否在范围内
        console.log(isFinite(1.7976931348623157e+608));//false
        console.log(isFinite(-5e-330));//true
		console.log(typeof Infinity);//number

NaN是一个特殊的数字,表示Not a Number

  //使用typeof检查NaN的类型
  console.log(typeof NaN);//number

在js中整数的运算基本可以保证精确,但如果使用js进行浮点运算,可能得到一个不精确的结果(故尽量不要使用js进行对精确度要求比较高的运算)

eg:
		var c=0.1+0.2;
        console.log(c);//0.30000000000000004

3.布尔类型(Boolean)

布尔值只有两个,主要用于做逻辑判断
当布尔值为真时,返回true
当布尔值为假时,返回false
//用typeof检查一个布尔值时,会返回boolean
console.log(typeof true);//boolean

4.Null类型

Null类型的值只有一个,就是null,null专门用来表示一个为空的对象

//使用typeof检查一个null时,会返回object
 console.log(typeof null);//object

5.Undefined类型

undefined类型的值只有一个,就是undefined
当声明一个变量,但是并不给变量赋值时,它的值就是undefined

 //使用typeof检查一个undefined时,返回undefined
 console.log(typeof undefined);//undefined

6.对象类型(Object)

对象属于一种复合的数据类型,在对象中可以保存多个不同数据类型的属性。如果使用基本数据类型的数据,我们所创建的变量都是独立的,不能成为一个整体
对象的分类
1.内建对象
——由ES标准中定义的对象,在任何的ES的实现中都可以使用
——eg:Math,String,Number,Boolean,Function,Object
2.宿主对象
——由js的运行环境提供的对象,目前来讲主要指由浏览器提供的对象
——eg:BOM,DOM
3.自定义对象
——由开发人员自己创建的对象
创建对象

使用new关键字调用构造函数,构造函数是专门用来创建对象的函数
 eg:
 		var obj=new Object();
        console.log(typeof obj);//object

在对象中保存的值称为属性

——向对象中添加属性
				语法:对象.属性名=属性值;
——读取对象中的属性
				语法:对象.属性名;
——修改对象的属性值
				语法:对象.属性名=新值;
——删除对象的属性
				语法:delete 对象.属性名;
		var obj=new Object();
        console.log(typeof obj);//object
        obj.name="孙悟空";
        console.log(obj.name);//孙悟空
        obj.name="猪八戒";
        console.log(obj.name);//猪八戒
        obj.age=19;
        console.log(obj.age);//19
        delete obj.age;
        console.log(obj.age);//undefined
对象的属性名和属性值

属性名
对象的属性名不强制要求遵守标识符的规范,什么名字都可以使用,但还是应尽量按照标识符的规范去做。如果要使用特殊的属性名,不能采用 . 的方式来操作,需要使用另一种方式:

语法:对象["属性名"]=属性值;
		var obj2=new Object();
        obj2["123"]=789;
        console.log(obj2["123"]);//789

使用[]这种形式去操作属性,更加的灵活,在[]中可以直接传递一个变量,这样变量值是多少就会读取那个属性

		var obj3=new Object();
        obj3["123"]=456;
        obj3["1"]="hello";
        obj3["#$$%%#"]=666;
        var n="123";
        console.log(obj3[n]);//456
        n="1";
        console.log(obj3[n]);//hello
        n="#$$%%#";
        console.log(obj3[n]);//666

属性值
js对象的属性值,可以是任意的数据类型(包括对象)

in运算符
可以使用该运算符来检查一个对象中是否含有指定的属性
如有则返回true,否则返回false

语法:"属性名" in 对象
  		var obj = new Object();
        obj.name = "孙悟空";
        console.log("name" in obj); //true
        console.log("age" in obj); //false

对象字面量
使用对象字面量,可以在创建对象时,直接指定对象中的属性

语法:{属性名:属性值,属性名:属性值·····}

对象字面量的属性名可以加引号,也可以不加,建议不加
如果要使用一些特殊的名字,则必须加引号

var obj={
            name:"猪八戒",
            age:28,
            gender:"男",
            test:{name:"沙和尚"}//属性值为对象,属性名为test
        };
        console.log(obj.test);//object{name="沙和尚"}

枚举对象中的属性
使用for···in语句可以枚举对象中的属性

语法:
	for(var 变量 in 对象){
				语句···
	}

for···in语句对象中有几个属性,循环体就执行几次,每次执行时会将对象中的一个属性的名字赋值给变量

 var obj={
            name:"猪八戒",
            age:28,
            gender:"男",
            test:{name:"沙和尚"}
        };
        // 枚举对象中的属性
        for(var n in obj){
            console.log(n);//name,age,gender,test
        }
        //下面这个循环便体现了使用[]这种形式去操作属性的灵活性
        for(var n in obj){
            console.log("属性名:"+n);
            console.log("属性值:"+obj[n]);
        }
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值