JavaScript基本数据类型学习(学习日记二)

一、基本数据类型

JavaScript 的数据类型,共有六种。(ES6 又新增了第七种 Symbol 类型的值,本阶段不涉及。)

  • 数值(number):整数和小数/又称浮点数(比如13.14

  • 字符串(string):文本(比如Hello World)【需要通过引号引起来】

  • 布尔值(boolean):表示真伪的两个特殊值,即true(真)和false(假)

  • undefined:表示“未定义”或不存在,所以此处暂时没有任何值,当声明的变量没有赋值时打印结果为undefined

  • null:表示空值,即此处的值为空

  • 对象(object):各种值组成的集合

(1)原始类型(primitive type)的值:通常,数值、字符串、布尔值这三种类型合称为原始类型,它们是最基本的数据类型,不能再细分了。

(2)合成类型(complex type)的值:对象则称为因为一个对象往往是多个原始类型的值的合成,可以看作是一个存放各种值的容器。

(3)还有两个特殊值:undefinednull

对象是最复杂的数据类型,又可以分成三个子类型。

  • 狭义的对象(object)

  • 数组(array)

  • 函数(function)

狭义的对象和数组是两种不同的数据组合方式,除非特别声明,之后课程中提到的“对象”都特指狭义的对象。函数其实是处理数据的方法,JavaScript 把它当成一种数据类型,可以赋值给变量,这为编程带来了很大的灵活性,也为 JavaScript 的“函数式编程”奠定了基础。

①null和undefined

        -null表示一个“空”的对象,转为数值时为0

        -undefined表示一个“此处无定义”的原始值,转为数值时为NaN(not a number)

boolean

        -真:true (空数组[]、空对象{}...)

        -假:false (undefined、null、0、NaN、""/''空字符串)

二、判断值的数据类型的方法

-typeof运算符:可以返回一个值的数据类型

  1. 数值、字符串、布尔值返回值分别为number、string、boolean
  2. 函数返回function
  3. undefined返回undefined
  4. 对象返回object
  5. null返回object【这是一个历史遗留问题,1995年的 JavaScript 语言第一版,只设计了五种数据类型(对象、整数、浮点数、字符串和布尔值),没考虑null,只把它当作object的一种特殊值。后来null独立出来,作为一种单独的数据类型,为了兼容以前的代码,typeof null返回object就没法改变了。 】
var num = 10;
var pai = 3.14;
var str1 = "1234";
var str2 = "muxiao"
var flag = "true"
var unde;
var obj = new Object();
var arr = [];
function f() {};

console.log(typeof num);//number
console.log(typeof pai);//number
console.log(typeof str1);//string
console.log(typeof str2);//string
console.log(typeof flag);//boolean
console.log(typeof unde);//undefined
console.log(typeof obj);//object
console.log(typeof arr);//object
console.log(typeof f);//function(函数的一个对象类型)

-instanceof运算符:可以判断具体对象

-Object.prototype.toString:判断是否数组类型(是返回true,不是返回false)

三、数值

(1)整数和浮点数

        - JavaScript内部所有数字都是以64位浮点数形式存储(1和1.0是相同的)

        -由于浮点数不是精确的值,所有在涉及小数的运算和比较要小心

(2)数值精度

        - 第1位:符号位,0表示正数,1表示负数(决定数值的正负)

        - 第2位到第12位(共11位):指数部分(决定数值大小)

        - 第13位到64位(共52位):小数部分(有效数字,决定数值的精度)

(3)数值范围

        - 如果一个数大于2的1024次方,会发生“正向溢出”

        - 如果一个数小于2的-1075次方(指数部分-1023加小数部分52位)发生“负向溢出”即 JavaScript 无法表示这么小的数,这时会直接返回0。

(4)NaN

        - NaN是JavaScript的特殊值,表示非数字(not a number),主要出现在将字符串解析成数字出错的场合【用isNaN(变量名)验证结果是不是NaN或者判断是否为数值】


        var x = 0.1;
        var y = 0.2;
        console.log(x + y);// 0.30000000000000004
//三个等号是完全等于的意思,比较两边是否完全等于返回false证明不精确
        console.log(0.1 + 0.2 === 0.3);// false
        console.log(0.3 / 0.1);// 2.9999999999999996
        console.log((0.5 - 0.4) === (0.3 - 0.2));// false

// 大于2的53次方之后,整数运算的结果开始出现错误
        // 2的53次方是一个16位的10进制数值
        console.log(Math.pow(2, 53));// 9007199254740992
        console.log(Math.pow(2, 53) + 1);// 9007199254740992
        console.log(Math.pow(2, 53) + 2);// 9007199254740994
        console.log(Math.pow(2, 53) + 3);// 9007199254740996
        console.log(Math.pow(2, 53) + 4);// 9007199254740996
// 大于2的53次方之后,多出来的有效数字都会无法保存,变成0
        console.log(9007199254740992111);// 9007199254740992000

        console.log(Math.pow(2, 1024));// Infinity(无穷大)
        console.log(Math.pow(2, -1075));// 0

        // 数字类型的范围:最大值和最小值
        console.log(Number.MAX_VALUE);// 1.7976931348623157e+308
        console.log(Number.MIN_VALUE);// 5e-324

        var num;
        console.log(num + 10);// NaN
// 注意:不要用NaN验证NaN
        console.log(num + 10 == NaN);// false
        // =赋值 ==等于 ===完全等于

        // 用isNaN(变量名)验证结果是不是NaN
        console.log(isNaN(num));// true --- 不是数值
        var num2 = 123;
        console.log(isNaN(num2));// false --- 是数值

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr.MUXIAO

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值