typeof类型转换

typeof 操作符

typeof 能返回的六种数据类型(区分数字类型)
number、string、boolean、undefined、object、function

var num = 123;
  console.log(typeof(num));      //返回 number 

写成 console.log(typeof num );也可以不过最好加括号

var num = {};
 console.log(typeof(num));//返回 object

var num = [] ;
  console.log(typeof(num));            //返回 object

var num = null;
 console.log(typeof(num)); // 返回 object,null最 早是代替空对象的

 var num = undefined;
  console.log(typeof(num));          //返回 undefined 

var num = fuction(){};
 console.log(typeof(num));         // 返回 function 

类型转换

var num = 1 +"1";
   console.log(typeof(num) + ":" + num);      //number:11 

var num = 1 *"1";
 console.log(typeof(num) + ":" + num);   // number:1 

 var num = 1 -"1";
 console.log(typeof(num) + ":" + num);   // number:0 

 var num = "2" -"1";
 console.log(typeof(num) + ":" + num);  // number:1 

 var num = "2" *"1";
 console.log(typeof(num) + ":"+ num);  // number:2 

显示类型转换

Number(mix) 是想把里面的东西转换成数字

var num = Number("123"); 
console.log(typeof(num) + ":" + num);//  Number:123,把字符串类型的 123 转换成了 number 类型 

 var demo = "123"; 
 var num = Number(demo);  
  console.log(typeof(num) + ":" + num); // Number:123,上面那一行的 Number 是为了把()里面转换成数字类型 

var demo = true; 
 var num = Number(demo);       
   console.log(typeof(num) + ":" + num); // Number:1 

  var demo = false; 
  var num = Number(demo);        
   console.log(typeof(num) + ":" + num);//  Number:0 

var demo = null; 
var num = Number(demo); 
 console.log(typeof(num) + ":" + num); // Number:0

var demo = undefined;
 var num = Number(demo);
 console.log(typeof(num) + ":" + num);//  Number:NaN 

  var demo = "abc"; 
  var num = Number(demo);
  console.log(typeof(num) + ":" + num); // Number:NaN 

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

  var demo = "123abc"; 
  var num = Number(demo);  
  console.log(typeof(num) + ":" + num); // Number:NaN 

parseInt(string,radix)

parse 是转化,Int是整型,整数,目的是把里面转换成整数

var demo ="123"; 
var num = parseInt(demo);
 console.log(typeof(num) + ":" + num); // number:123 
 var demo = true; 
 var num = parseInt(demo);
 console.log(typeof(num) + ":" + num); //number: NaN 

  var demo = false;
  var num = parseInt(demo); 
  console.log(typeof(num) + ":" + num); // number: NaN 

  var demo = 123.9;
  var num = parseInt(demo); 
  console.log(typeof(num) + ":" + num); // number: 123,此处是直接去掉小数,不是四舍五入

var demo = "10"; 
  var num = parseInt(demo ,16); 
  console.log(typeof(num) + ":" + num); // number: 16 

var num = parseInt(demo ,radix);
//radix 是基底的意思 radix 写成 16,系统会认为是以 16 进制为基底, 10(一零)是 16 进制的一零,是 以 16进制为基底,把他转成为 10 进制的数字(就是16),上面是以目标进制为基底, 转换成十进制(radix范围是 2-36)

  var demo = "3"; 
  var num = parseInt(demo ,2);
  console.log(typeof(num) + ":" + um);// number: NaN 

 var demo = "b"; 
 var num = parseInt(demo ,16);
  console.log(typeof(num) + ":" + num); // number: 11 

var demo = "123abc"; 
  var num = parseInt(demo); 
  console.log(typeof(num) + ":" + num); // number: 123 

 var demo = "100px"; 
  var num = parseInt(demo); 
  console.log(typeof(num) + ":" + num);//number: 100

parseInt从数字类开始看,看到非数字类为止,返回原来的数

parseFloat(string)

parseFloat(string)转换成浮点数字,就是正常小数

var demo = "100.2"; 
var num = parseFloat (demo); 
console.log(typeof(num) + ":"+ num); // number: 100.2 

var demo = "100.2.3";
 var num = parseFloat (demo); 
 console.log(typeof(num) +:+ num); // number: 100.2 

var demo = "100.2abc"; 
 var num = parseFloat (demo);
  console.log(typeof(num) + ":" + num); // number: 100.2 

parseFloat 从数字类开始看,看到除了第一个点以外的非数字类为截止,返回前面的数

toString

var demo = 123;
 var num = demo.toString(); 
 console.log(typeof(num) + ":" + num); 答案显示 string: 123

相当于把 123 转换字符串,想把谁转换成字符串,就写成谁.toString

var demo = undefined;
var num = demo.toString();
console.log(typeof(num) + ":" + num); //报错,undefined和 null 不能用 toString 

 var demo = 123;
   var num = demo.toString(8); 
   console.log(typeof(num) + ":" + num); //173,

把 123 转成为八进制 这里的 radix意思是以十进制为基底,转换成目标进制(即 8进制)

 var demo = 10; 
 var num = demo.toString(8); 
 console.log(typeof(num) + ":" + num); //12 

 var demo = 20; 
  var num = demo.toString(8); 
  console.log(typeof(num) + ":" + num); // 24

以十进制为基底,把 20 转换成8 进制,就是 24
例给你一个二进制的数,转换成十六进制,是先从二进制到十进制再到十六进制

var num = 10101010; 
var test = parseInt(num, 2);  
console.log(test.toString(16)); //答案 aa 

 var num = 10000; 
var test = parseInt(num, 2); 
console.log(test.toString(16)); //答案 10 

String(mix)

String(mix)转换成字符串,写什么都成了字符串

 var demo = 123.234; 
 var num = String (demo); 
 console.log(typeof(num) + ":" + num); // string: 123.234 

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

Boolean()

Boolean()转换成布尔值false 和 true

var demo = “”; 
var num = String (demo); 
console.log(typeof(num) + ":" + num); // boolean: false 

隐式类型转换

隐式类型转换内部隐式调用的是显示的方法 隐式类型转换包括 isNaN () ,++,–, +/-(一元正负),+,*,% ,, &&,|| ,!, <,>,<= ,>= ,== ,!=
isNaN ();
isNaN ();当你把一个数放到()里,它能判断是不是NaN,先比括号里面的放到 number 里面转换,然后返回来

console.log(isNaN(NaN);                //答案 true 

 console.log(isNaN("123");             //答案 false

  `console.log(isNaN(“abc”);               //答案 true`

会调用 number,先把“abc” 放 number 里面转换,通过 number 的转换再和NaN 比对,如果相等就是 true

console.log(isNaN(null);      //答案 false,在 number 里面放 null是 0,不是 NaN

console.log(isNaN(undefined);             //答案 true 

++/–(加加减减) +/-(一元正负)

var a = "123"; 
 a ++; // 124,++这个符号放到这里,还没运算之前,先把前面的 a 转换成number 的 123

  var a = “abc”;  
  a ++; //NaN 
 

+/-(一元正负) +a;-a;正 a 和负 a都会变换成数字

var a =+"abc";
  console.log(a + ":" + typeof(a)); //NaN:number。尽管转换不成数字,也会转换成数字类型,因为里面隐式的调用 了一个 number

+

+隐式类型会转换成 string,当加号两侧有一个是字符串,就用调用 string,把两个都 变成字符串

  var a = "a" +1
  console.log(a + ":" + typeof(a));//a1:string

% *和% 乘和模都会转换成 number.

 var a = "1" *1;   
    console.log(a + ":" + typeof(a)); // 1:number 
 var a = "a" *1;    
    console.log(a + ":" + typeof(a)); // 1:number,先是 number(“a”)的结果乘以 number(1)的结果,最后是 NaN*1, 还是NaN,但是数据类型是 number   

&& || !

与或非,都是有类型转换的,不过是返回的是表达式的值,不是隐士类型转换的值, 但是判断是一个类型转换的值
< > <= >=

var a =1 > "2";    
  console.log(a + ":" + typeof(a)); // false:boolean,有数字相比较的,就会隐士类型转换成数字类型 

 var a ="3" > "2";  
     console.log(a + ":" + typeof(a)); //true:boolean
var a ="3" > 2;   
    console.log(a + ":" + typeof(a)); // true:boolean 会转换成数字,因为数字优先  

== !=

var a = 1 == "1";    
    console.log(a + ":" + typeof(a)); //true:boolean,隐士类型转换 
 var a = 1 == true;    
  console.log(a +:+ typeof(a)); //true:boolean

例 false>true //答案 false,会先转换成数字,0>1当然是错的
例 2>1>3 //答案 false
例 2>3<1 //答案 true
例 10>100>0 //答案 false
例 100>10>0 //答案 true 以上都是挨个算的,先看前面的是 true 还是 false,再和后面的比,不是顺着下来
例 undefined>0 //答案 false
例 undefined0 //答案 false
例 undefined<0 //答案 false
例 null>0 //答案 false
例 null
0 //答案 false
例 null<0 //答案 false
例 undefined == null //答案 true
例 NaN ==NaN //答案 false,NaN 是唯一一个连自己都不等于的

不发生类型转换

绝对等于(三个等号)
!绝对不等于
例 1 === 1 //答案 true
例 1 === “1” //答案 false
例 1 !
“1” //答案 true
例 1 !== 1 //答案 false
例 NaN =NaN //答案 false
例 console.log(a); //如果定量没定义就直接访问, a is not defined报错; 有一种特殊情况,当且仅当把未定义的变量放到 console.log(typeof(a));里面就访问, 不报错,返回 undefined

console.log(typeof(a)); //答案 undefined,这个 undefined是字符串
例 console.log(typeof(typeof(a))); //答案 string。console.log(typeof(typeof(a))); 可以先解析成 console.log(typeof(“undefined”));再返回一次就是 string 字符串。 上面考的是 typeof(a)返回的六种类型的值(number、string、boolean、undefined、 object、function)都是 undefined 字符串

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值