JS-typeof与数据类型转换

一、检测数据类型(typeof)

通过 typeof 关键字检测数据类型

语法:console.log(typeof(age)/ console.log(typeof age)

typeof 输出的内容全是以字符串形式输出的

注意(考点):

平常没有定义变量直接输出,如 console.log(a)就会报错,如 console.log(typeof(a))会得到 undefined,我们console.log(typeof(typeof(a)))会得到 string,因为输出的这个 undefined 是字符串类型的

提一嘴:

js的bug(特征): typeof null,得到的是object

二、数据类型转换

1. 显示类型转换

1.1 Number(数据)
  • “123”转化为数字类型得到123,
  • “ -123”转换后得-123,
  • true 转换后得 1,
  • false 转换后得到 0,
  • null转换后得到 0,
  • undefined 转换后得到 NaN,
  • “a”转换后得到 NaN,
  • “123a”转换后得到NaN,

所有的值经历了 Number 的转换都能变成数字类型,只不过有些转换不成具体的数字的用 NaN 表示

1.2 parseInt(数据) – 只保留整数
console.log(parseInt('1.23')); // 1
console.log(parseInt('-1.23'); // 1

parseInt() parseFloat()补充知识:

  1. 如字符串内包含数字与其他字符, 以数字开头则将带有数字的字符串转化为数字类型的整数,其余的砍掉。不以数字开头则返回NaN。
  2. 比如 parseInt(“123aa”); 返回 123
  3. 比如 parseInt(“aa123aa”); 返回 NaN
  4. true、undefined 等等转换后都是 NaN。
1.3 parseFloat(数据) – 转换为浮点数

与parseInt及其相似

console.log(parseFloat(‘1.23’)); //1,23

console.log(parseFloat(‘-1.23’)); // -1.23

console.log(parseFloat(‘2’)); // 2

1.4 String(数据)

转换为字符串(任何值都可以转)

1.5 变量.toString(进制)

1、他也可以把值转换为字符串,但是写法和 String 不一样。比如:var num = (123).toString();

2、给数字 toString,不能直接写成数字.toString(),会报错的,你必须给数字加个括
号,写成(数字).toString( )才可以,其他的不用加)

3、undefined 和 null 不能用 toString,会报错。

2. 隐式类型转换

(1) isNaN

isNaN 的作用是判断一个值是不是 NaN,比如 console.log(isNaN(NaN)),输出得 true, console.log(isNaN(123)),输出得 false,console.log(isNaN(“123”)),输出得 false,console.log(isNaN(“a”));输出得 true,console.log(isNaN(undefined))输出得 true。 其实经历了 isNaN 的值系统会先让他调用 Number 来判断他是不是 NaN,如果是,就返回 true,不是就返回 false。

(2) ++ --,+ -(正/负)

所有的值经过++和–的运算后都会先把他用 Number 转换为数字类型再计算,比如“1”++就等于数字类型的 2,“a”++就等于 NaN,+/-也一样,他调用的也是 Number,-“1”就等于数字类型的-1,+“a”就等于 NaN。

(3) 加号+

+如果加号两边有一边是字符串,他就会调用 String,把两个值连接起来,如果没有字符串,他就会调用 Number。

(4) 减号- * / %

减、乘、除、摩尔他都会先调用 Number 转换为数字类型再计算。

(5) &&   ||   !

!把他转换为布尔值再取反,所以他调用的是 Boolean,其实&&和||调用的也是 Boolean,它是把值转换为布尔值来判断真假的。

(6) > <    >=   <=

如果两个字符串比较,就会用自己的阿斯克码比较,如果字符串和数字比较,就会把字符串转换为数字。

(7) ==   !=

==和!=也会用隠式类型转换,输出 3==“3”就得到 true。

注意:有几个特殊的,比如 1>2<1 得 true,他会一个一个算,1>2 是 false,转换后是0,0<1 最后得 true。

还有 undefined 和 null 既不大于 0 又不小于 0 也不等于 0,所以 undefined==null(比较特殊,没有规则,系统定义的,系统规定他俩不能和数字比较,所以他和数字比较的时候也不会发生类型转换,就是不能比),NaN 不等于任何东西,包括自己。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值