JavaScrip中undefined 和number型数据 和typeof 检测

目录

利用typeof测定数据类型

 题1.typeof 返回值

题2.typeof 返回值

数据类型

1.变量只声明 不赋值 undefined

2.number数据

1.在JS中,小数与小数之间运算有精度。

2.求余 % 常用(不会越界)

3.保留小数的几位小数 用 toFixed() 

4.开发中,保留指定小数(重要)

 5.向上/下取整 和 四舍五入取整

 6.number型进制

7.number型范围 


利用typeof测定数据类型

对一个值使用 typeof 操作符可能返回下列某个字符串:typeof的返回结果一定是一个字符串

  • "undefined"——如果这个值未定义;

  • "number" -----如果这个值是数字类型;

  • "boolean"——如果这个值是布尔值;

  • "string"——如果这个值是字符串;

  • "number"——如果这个值是数值;

  • "object"——如果这个值是对象或 null;

  • "function"——如果这个值是函数。

  • 注意点1:null 有时会被当作一种对象类型,但是这其实只是语言本身的一个 bug,即对 null 执行typeof null 时会返回字符串 "object"。实际上,null 本身是基本类型

  • 注意点2:从技术角度讲,函数在 ECMAScript 中是对象,不是一种数据类型。然而,函数也确实有一些特殊的属性,因此通过 typeof 操作符来区分函数和其他对象是有必要的。

 题1.typeof 返回值

 console.log(typeof typeof 95);

结果分析:结果为 string。   typeof 95 的返回结果是 number,而number这是一个字符串,所以typeof number 结果就是string 。(95是数字型数据,所以返回结果是number,但是number是一串字符,外层的typeof是对这串字符判断类型,所以最终返回结果是string)

题2.typeof 返回值

        var a = 100;
        a = a + 21;
        var b = a % 19;
        var re = typeof b;
        console.log(re);

结果分析:结果为 number ,不管前面怎么算,b变量一定是一个数字型数据,而typeof返回值就是前面7个单词字符串中的一个,所以是"number" 。typeof b 返回值是字符串"number",然后赋值给re

var re = "number"

所以打印出的re结果就是字符串的内容 number 

如果再求 typeof re,就是typeof "number",返回值就是"string",所以

打印结果就是 string

数据类型

在计算机中,不同的数据类型所需要占用的存储空间是不同的,为了便于把数据分成所需内存大小不同的数据,充分利用存储空间,于是定义了不同的数据类型。简单来说,数据类型就是数据类别型号。

不同数据类型在底层中的形式:

数据类型在底层都是以二进制形式表示的,二进制的前三位为 0 会被 typeof 判定为对象类型,null为全0所以会被误判为"object",

  • 000 - 对象,数据是对象的应用

  • 1 - 整型,数据是31位带符号整数

  • 010 - 双精度类型,数据是双精度数字

  • 100 - 字符串,数据是字符串

  • 110 - 布尔类型,数据是布尔值

变量的数据类型:

变量是用来存储值得所在处,它们有名字和数据类型。变量得数据类型决定了如何将代表这些值得位存储到计算机内存中。JavaScript是一种弱类型或者说动态语言这意味着不用提前声明变量的类型,在程序运行过程中,类型会根据存入的数据而被自动确定(跟C语言,java不同,注意!!)

1.变量只声明 不赋值 undefined

var a;
console.log(a); //undefined

结果分析:undefined  变量a未定义 或者 定义了变量但是没有初始化,取值取得的是什么就不清楚,所以是undefined

  var a;
  console.log(a); //a未赋值,undefined
  a = 20;  //给a赋值后
  console.log(a); //20

2.number数据

eg:

var n1 = 20;
n1 = 100;
n1 = n1 + 1.2; //n1取值100,然后把100跟1.2做加法运算,然后把运算的结果给n1
console.log(n1);

1.在JS中,小数与小数之间运算有精度。

eg:0.1 + 0.2 =0.3 ,但是在js中

log(0.1+0.2); //0.30000000000000004

例子验证:

        var a = 0.1;
        var b = 0.2;
        if (a + b == 0.3) {
            alert("You got 0.3    测试11111"); //不运行
        }
        console.log("---------------------------");
        //解决方法
        //转化成整数进行计算
        var a = 0.1;
        var b = 0.2;
        if ((a * 10 + b * 10) / 10 == 0.3) {
            alert("You got 0.3     测试2222");   //运行
        }

总结:js不能用于一些科研运算,可以用作一般互联网产品,因为运算有精度

2.求余 % 常用(不会越界)

var a = 10;

var b = 3;

var c = a%b; //所得的结果c一定是小于b的(余数c一定小于b)

3.保留小数的几位小数 用 toFixed() 

var a = 3.1415926;
var b = a.toFixed(2);  //a保留2位小数
console.log(b); //3.14

注意点:保留小数要遵循四舍五入

var a = 3.1415926;
var b = a.toFixed(3);  //a保留3位小数
console.log(b); //3.142  

结果分析:保留3位小数,应该是3.141,但第4位小数为5,要进行四舍五入,所以第3位小4数变为2,结果为3.142

4.开发中,保留指定小数(重要)

思想是:先把小数变成整数,再计算

需求:若要求保留两位小数,且若第2位小数为0,就不显示,第一位小数为0也不显示,若两位小数都不为0,正常显示 ,若第一位小数不为0,第二位为0,只显示第一位小数

方法:to.Fixed(2)*100/100; 若是三位小数to.Fixed(3)*1000/1000.。。。

        //第二位小数为0就不显示
        var a = 15141.3;
        var b = 123;
        var c = a/b;
        console.log(c);
        var d = c.toFixed(2)*100/100;
        /* 核心思想:除数为整10/100等时,方便没有用处的小数位的取舍
            c.toFixed(2)--> 123.10
            c.toFixed(2)*100-->12310  这里小数变成了整数
            c.toFixed(2)*100/100-->123.1 就成功取出了第二位小数0,只保留了第一位非0小数
         */
        console.log(d);

 5.向上/下取整 和 四舍五入取整

向上取整:Math.ceil()

向下取整:Math.floor()

四舍五入取整:Math.round()

        var a = 100.45;
        var b = Math.ceil(a);  //向上取整 101
        var c = Math.floor(a); //向下取整 100
        var d = Math.round(a); //四舍五入取整 100
        console.log(b);
        console.log(c);
        console.log(d);

 6.number型进制

八进制 0~7   程序里面数字前面加上 0 表示八进制

var num = 010;        //表示八进制

console.log(num);  //010转换为10进制就是8

注意:console.log(); 默认打印的是十进制

十六进制 0~9 a b c d e f  数字前面加 0x 就是十六进制

var num1 = 0xA;

console.log(num1);   //变为10进制的10

7.number型范围 

(1)最大值:Number.MAX_VALUE,值为:1.7976931348623157e+308

(2)最小值:Number.MIN_VALUE,值为:5e-324

(3)特殊值:Infinity  无穷大   -Infinity  无穷小   NaN 代表一个非数字

        console.log(Number.MAX_VALUE*2);   //Infinity已经最大值了再乘一个2就是无穷大

        console.log(-Number.MAX_VALUE*2)  // 无穷大的反面就是无穷小  -infinity

        console.log('hh开心' - 100);  //NaN  结果不是一个数字型

(4)IsNaN() :用来判断一个变量是否为非数字的类型。非数字型为true,数字型为false

        console.log(isNaN('好老师啊'));  // true  好老师啊为非数字,所以未true

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值