typeof数据类型及转换

第一章:typeof 返回数据类型,有六种:number, string, boolean, object, undefined, function.

    const a = 11;
    console.log(typeof (a)); //返回number
    const b = "11";
    console.log(typeof (b)); //返回string
    const d = true;
    console.log(typeof (d));  //返回boolean

{}, [], 都返回object

    const c = {};
    console.log(typeof (c)); //返回object
    const e = [];
    console.log(typeof (e));  //返回object

null 返回object.虽然null原始值是1,但在最原始的时候它是用来代替空对象来占位

    const f = null;
    console.log(typeof (f));  // 返回object

--------------------------------分割线-------------------------------

第二章: js的类型转换功能(其他语言没有这个功能)

一、显示类型转换

1.Number(mix)

    let demo = '123';
    let num = Number(demo);
    console.log(typeof (num) + ":" + num); //number:123
    let demo = true;
    let num = Number(demo);
    console.log(typeof (num) + ":" + num); //  number:1
    let demo = "a";
    let num = Number(demo);
    console.log(typeof (num) + ":" + num); // number:NaN
    //  a明显不是一个数字。

2.parseInt(string, radix), radix表示基底。将值转换成整型的数

看到非数字位时截至
    let demo = "123.45";
    let num = parseInt(demo);
    console.log(typeof (num) + ":" + num); //    number:123
    let demo = "123b.45abc";
    let num = parseInt(demo);
    console.log(typeof (num) + ":" + num); //  number:123
    let demo = true;
    let num = parseInt(demo);
    console.log(typeof (num) + ":" + num); //   number:NaN
    let demo = "10";
    let num = parseInt(demo, 16);
    console.log(typeof (num) + ":" + num); //   number:16
    // 这里的radix为16,表示10是16进制的数
   //  PS:radix的范围:2-36.

3.parseFloat(string):将字符串转换成浮点型

    let demo = "123.233";
    let num = parseFloat(demo);
    console.log(typeof (num) + ":" + num); //    number:123.233
    let demo = "123.2.33";
    let num = parseFloat(demo);
    console.log(typeof (num) + ":" + num); //   number:123.2
    //   找到第一个小数点后,再遇到小数点立马停止
    let demo = "12a3.2a.33";
    let num = parseFloat(demo);
    console.log(typeof (num) + ":" + num); // number:12
    // 遇到非数字位立马停止。

4.String(mix):将所有值都转换成字符串

    let demo = "123.2.33";
    let num = String(demo);
    console.log(typeof (num) + ":" + num); //    string:123.2.33
    let demo = undefined;
    let num = String(demo);
    console.log(typeof (num) + ":" + num); //   string:undefined
    let demo = true;
    let num = String(demo);
    console.log(typeof (num) + ":" + num); //   string:true

5.Boolean()

    let demo = "abc";
    let num = Boolean(demo);
    console.log(typeof (num) + ":" + num); //   boolean:true
    let demo = "";
    let num = Boolean(demo);
    console.log(typeof (num) + ":" + num); //    boolean:false

除了" ", undefined, NaN, null, 0, false这六个的boolean = false以外,其他值的boolean都为true。

6.toString(radix), radix表示目标基底

注意写法,与前面的略有不同:demo.toString()。

    let demo = 123;
    let num = demo.toString();
    console.log(typeof (num) + ":" + num); //    string:123
    let demo = 10;
    let num = demo.toString(8);
    console.log(typeof (num) + ":" + num);//   string:12
    // 代码含义:将10转换成8进制。与parseInt的进制正好相反。

PS:undefined和Null不能用在这里,会报错。

小练习:将10000b转换成十六进制

先将10000b—>十进制—>十六进制
    let demo = "10000";
    let num = parseInt(demo, 2);
    let test = num.toString(16);
    console.log(typeof (test) + ":" + test); //   string:10

二、隐式类型转换

1.isNaN(),内部含有一个Numer()

    console.log(isNaN("abc"));
    console.log(isNaN(null));
    console.log(isNaN(undefined));

true
false
true

Number(“abc”)–>NaN–>true(先将Number(“abc”),得到NaN,最后是NaN,得到true。)

Number(null)-->0–>false

Number(undefined)–>NaN–>true

2.++/-- +/-(一元正负)

    let a = "123";
    a ++;
124

内部有隐形转换Number.Number(“123”)–>123–>124

    let a = "abc";
    a ++;
  NaN

Number(“abc”)–>NaN–>NaN。(typeof依然是Number)

    let a = +"123";
    a ++;
NaN, Number类型

3.+(加号),调用的隐式转换是String()

当加号+两侧有一个字符串的时候,就会调用string(),将两边全部转换成字符串。

    let a = "abc" + 1;
    console.log(typeof (a) + ":" + a);
string:abc1

4.-*/% (减乘除mod),隐式调用Number()

    let a = "1" - 1;
    console.log(typeof (a) + ":" + a);
    let b = "1" * 1;
    console.log(typeof (b) + ":" + b);
    let c = "2" % 1;
    console.log(typeof (c) + ":" + c);
    let d = "1" / 1;
    console.log(typeof (d) + ":" + d);
        let e = "a" * 1;
    console.log(typeof (e) + ":" + e);

number:0
number:1
number:0
number:1
number:NaN

5.&& || !

6.<> <= >=

1 > 2 -->false
2 > 1 > 3 -->false

7.== !=

NaN == NaN -->false
undefined == undefined -->true
=,!(绝对等于===,绝对不等于!==,注意NaN)

1 === “1” --> false

2 === 2 -->true

NaN === NaN -->false

NaN !== NaN -->false

特殊的隐式类型转换点击查看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值