JavaScript 之 typeof 操作符 及 类型转换

    一、typeof操作符

作用: 返回值的类型,类型转换。

值得六种返回类型:Number     string     boolean    object    undefined    function 

这里说一下特殊的返回类型:

返回值为object有三种情况:{}、null、数组类型[]

返回值为undefined情况:undefined

返回值为function情况:function 函数

例如:

var num = 123 ;
console.log(typeof(num));

二、类型转换

类型转换分为两种:显式类型转换、隐式类型转换。

首先来说一下显式类型转换

1、显式类型转换

(1)    Number(mix)

(2)    parseInt(string , radix)

(3)    parseFloat(string)

(4)    toFixed(radix)

(5)    String(mix)

(6)    Boolean()

(7)    toString(radix)

下面详细介绍一下以上类型转换:

(1)Number(mix)    

先看几个例子吧。

var num = Number("123");
console.log(typeof(num) +":"+ num);

结果如下:

当boolean经过Number时候

var bool = Number(true);
console.log(bool);
var boo = Number(false);
console.log(boo);

当undefined经过Number时候:

console.log(Number(undefined));

所有值只要经过Number都会转为数字类型。能转为数字的就转为数字,其它转为NaN。

console.log(Number("abc"));
console.log(Number("123abc"));

(2)    parseInt(string , radix)    

把值转换为整型(不进行四舍五入,直接切掉)

从数字位开始往下找,到非数字位剪切掉。

下面看一下例子:

var demo = parseInt("123");
console.log("demo:"+demo); 
var demo1 = parseInt(true);
console.log("demo1:"+demo1);
var demo2 = parseInt("123abc");
console.log("demo2:"+demo2);

    结果如下:

parseInt还可以进行进制转换,规则:以目标进制为基底,转换为十进制。

var demo3 = parseInt(1010,2);//把二进制1010转换为十进制
console.log("demo3:"+demo3);
var demo4 = parseInt(10,16);//把十六进制10转换为十进制
console.log("demo4:"+demo4);

结果如下:

(3)    parseFloat(string)

从数字位开始看,直到除了第一个点以外非数字位截止。

效果和parseInt雷同,不再赘述。

(4)    toFixed(radix)

保留小数位。

   

 (5)    String(mix)

写什么东西都转换为字符串。

(6)    Boolean()

 undefined     null     NaN    ""    0    flase     ==     转换为bool值为false ;其余为true。

(7)    toString(radix)

以十进制为基底转换为目标进制。

注意:undefined    null    不能使用toString。 

例子:

进制转换例题:把二进制转换为十六进制。

二进制——>十进制——>十六进制

        parseInt            toString

var demo = 1010;
var num = parseInt(demo,2);
var num1 = num.toString(16);
console.log(num1);

三、隐式类型转换

内部调用显式类型转换的方法

(1)    isNaN

(2)    ++/--    +/-

(3)    +

(4)    * /%

(5)    && || !

(6)    <     >    <=    >=

(7)    ==    !=

 

以上前五个要调用显式类型里面的Number();

(6)(7)要调用显式类型的Boolean()。

下面介绍几种特殊的情况:

NaN是非数,不等于任何。

 

其中不发生类型转换的有         ===(绝对等于)    !==(绝对不等于)【ps:两边必须长得一样才成立】

Last but not least!

未定义变量当且仅当放在typeof中不报错,并可打印undefined;

 

最后一道小题可能我们会忽略的某个点。

console.log(typeof(typeof(a)));打印结果会是什么?

 

哈哈,与你想的结果一样吗?

 

 

补充几道隐式类型转换的题目:

var str = false + 1 ;       
console.log(str);
var demo = false == 1;
console.log(demo);
if(typeof(a) && -true + (+undefined) + "" ){
    console.log('基础扎实');
}
if(11 + "11" * 2 == 33){
    console.log('基础扎实');
}
!!" " + !!"" - !!false||console.log('哈哈哈');

结果:

1

false

基础扎实

基础扎实

不能打印

 

 

知道为什么吗?

" "  空格字符串   boolean值为true
""   空串        boolean值为false
(window.foo || (window.foo == 'bar'));       ------>  "bar"
优先级问题

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值