javascript数据类型转换

JS4 数据类型转换

1 / 显示类型转换

typeof可以为我们返回 6 个值 [ number 、 string 、boolean ][ object 、undefined 、function ]

显示类型转换:( 里面都是参数 )parseInt(string radix)有 2 个参数

Number(mix) [ 转换为数字类型 、 如var num = Number("abs"); 打印:num = NaN ( 数字类型 ) ]

parseInt(string radix) [ 转换成整型 、 如var num = Number("12.36987"); 打印:num = 12 ]

parseInt(string radix) [ 转换成整型 (进制) 、 如var num = parseInt("123.987" , 8); 打印:num = 83 ]

parseFloat(string) [ 转换成浮点数 、 如var num = parseFloat("123.987"); 打印:num = 123.987 ]

toString(radix) 用法不一样 --- 想给谁转换成自符串 就 [ 谁.toString() ]

String(mix) [ 转换成字符串 、 如 var num = String("10101010.abc"); 打印:num = 10101010.abc ]

Boolean() [ 转换成布尔值 、 如 var num = String("10101010.abc"); 打印:num = 10101010.abc ]

var num = "123" + "234"; console.log(typeof(num) + ":" + num ); //加号连接123234


[ ❆ ] Number( mix ) -- 转换成数字、转换不了的结果为 NaN 非数

[ ❆ ] parseInt( string,radix ) -- 转换成整数

[ ❆ ] parseFloat( string ) -- 浮点数

[ ❆ ] toString( radix ) -- 转换成字符串

[ ❆ ] String( mix ) -- 字符串

[ ❆ ] Boolean( ) -- 转换成布尔值

2 / 隐示类型转换

isNaN(); 判断是不是数字 先 Number 再 NaN 看不见的Number


说 1 说 、 练 1 练

[ ❆ ] isNaN(); TA 对应的是 Number() 、注释看下面对应的 L:

[ ❆ ] 加加++ 减减-- 正+ 负- (一元正负)

[ ❆ ] + 当有一个为字符串则转换成: String

[ ❆ ] - 减 、 * 乘 、 / 除 、 % 取余

[ ❆ ] && 与 、 || 或 、 ! 非

[ ❆ ] < 小于 、 > 大于 、 <= 小于等于 、 >= 大于等于

[ ❆ ] == 等于 、 !== 不全等于

1、var dome = isNaN(NaN); / 当你给一个数放在 NaN 里、 TA 会判断这个数是不是 NaN 给你返回回来 / console.log(dome); 返回结果 = ture

2、var dome = isNaN(123); 返回结果 = false / var dome = isNaN("123"); 返回结果 = false / var dome = isNaN("abc"); 返回结果 = ture

3、这是为什么?: Nubmer("abc") -- NaN 、若是NaN 返回的结果就是 ture

4、var dome = isNaN(null); 返回结果 = false / Nubmer(null) = 0 、0 不是 NaN

5、var dome = isNaN(undefined); 返回结果 = ture / var dome = Number(undefined); ------ console.log(dome); 返回结果: NaN

第二个、加加减减: ++ 、-- 、一元正负: + 、-

1、var a = 123; / a++; / console.log(a); 结果 = 124

2、var a = "123"; / a++; / console.log(a); 结果也 = 124

3、var a = "abc"; / a++; / console.log(a); 结果:a = NaN

4、第一步:Number("abc"); 没转成结果 = NaN

5、typeof(a) 、结果:a = Number 数字类型 / 减减 -- 、 一样的

6、一元正负: + 、- :都会转换成数字

7、var a = +"abc"; / console.log(a + ":" + typeof(a) ); / 结果:NaN : Number

8、undefined = null / 非数NaN 不等于任何包括自己

9、不对a 进行申明直接console.log( typeof(a) ); 唯一只有这种情况不报错

0、不发生任何类型转换的两个:=== 和 !==

L:TA会给这个变量拿出来先放到 Number 里面去、通过转换、转换的结果再 ++ 比对

3 / 课后作业

alert(typeof(a) ); // undefined

alert(typeof(undefined) ); // undefined

alert(typeof(NaN) );// number

alert(typeof(null) );// object

var a = "123abc"; alert(typeof(+a) );// number

alert(typeof(!!a) );//报错 a is not defined

var a = "123abc"; alert(typeof(!!a) );// boolean

alert(typeof(a + "" ) );//报错 a is not defined

var a = "123abc"; alert(typeof(a + "" ) );// string

alert( 1 == "1" );// true

alert( NaN == NaN ) ; // false

alert(NaN == undefined) ; // false

alert("11" + 11) ;// 1111

alert(1 === "1" ); // false

alert(parseInt("123abc") );// 123


var num = 123123.345789;

alert(num.toFixed(3) ); // 123123.346

typeof(typeof(a) );

4 / 知识扩展

将 D 指向 C 的空间地址、这叫引用传值 [ var C = { 对象 }; var D = C; ]

将 A 的值copy一份放到B的空间、这叫赋值传值 [ var A = 5; var B = A; ]

数组类型同对象类型使用的是引用传值、其它赋值传值


5 / 好玩的数据类型转换

类型转换有什么好玩的

1、比喻我定义一个: var hotDog = 1 + 1; 结果 = 2 / var hotCat = "1" + "1"; 结果 = 11 / var hotPag = 1 * "1"; 结果 = 1

2、console.log("hotDog是" + typeof(hotDog) + " 结果是: " + hotDog);

3、hotDog是number 结果是: 2 / hotCat是string 结果是: 11 / hotPag是number 结果是: 1

4、再比喻我定义一个: var hotDog = 1 - "1"; 结果 = 0 / var hotCat = "2" - "1"; 结果 = 1 / var hotPag = 2" * "1"; 结果 = 2

5、都可以玩、为什么可以玩、因为它有一个东西叫类型转换

6、再比喻:var num = Number("东东你好呀"); / 打印:console.log(typeof(num) + ":" + num );

7、类型为:数据类型 、 结果为:NaN非数 、若是数字字符串结果为对应的数字

radix机底

1、var demo = "123.9"; // parseInt(demo, radix机底) -- 如下面三行:

2、var domo = "10";

3、var num = parseInt(domo, 16); 16 代表进制

4、给 16 转换为 10 进制、

5、以目标进制为机底转换成 10 进制

6、console.log(typeof(num) + ":" + num );

toString( radix ) -- 转换成字符串的用法

1、var dome = 123; / var num = dome.toString(); / console.log(typeof(num) + ":" + num );

2、有两个不能用 undefined 、null

3、var num = dome.toString(radix);里面可以写个参数

4、以 10 进制为机底转换成目标进制

5、var dome = 123; / var num = dome.toString(8); / console.log(typeof(num) + ":" + num );

6、给 123 转换成 8 进制 、 类型是String类型、结果num = 173

练 1 练 、 考 1 考

[ ※ ] 写一道考题、给一个 2 进制转换成 16 进制

[ ※ ] 先给 2 进制转换成 10 进制、再给 10 进制转换成 16 进制

[ ※ ] var num = 10101010;

[ ※ ] var test = parseInt(num, 2);

[ ※ ] console.log(test.toString(16));

6 / typeof 操作符

六种数据类型:number 、string 、boolean 、undefined 、object 、function

typeof 操作符:帮我们区分每组数据是什么数据类型的

var lim = "dongfc";

console.log( typeof(lim) ); 可以打印 lim 是什么数据类型

{ } 、[ ] 、null 返回的都是 object

7 / 传值方式

引用值同原始值唯一的不同是赋值形式的不同

数组类型同对象类型使用的是引用传值、其它赋值传值

A:不可改变的原始值-栈数据stack [ Copy ]

[ ❆ ] 1、Number-数字 var a=1;

[ ❆ ] 2、String-字符串 var a=""; 或 var a='';

[ ❆ ] 3、Boolean-布尔-就两值-一个1 var a=true;真 另一个0 var a=false;假

[ ❆ ] 4、undefined-未定义var a;未赋值

[ ❆ ] 5、null-空 占位用

[ ❆ ] 6、var Num = 100;

[ ❆ ] 7、var Num1 = Num;

[ ❆ ] 8、Num = 200;

[ ❆ ] 9、一开始申请一个房间var Num = 100;

[ ❆ ] 0、Num1 = Num、复制过来 Num1 = 100、相当于又开了一个房间

[ ❆ ] 0、接着让Num = 200;、此时并不是在第一个房间的基础上改200

[ ❆ ] 0、而是另开了一个房间、新的房间叫Num、第一个房间byebye

[ ❆ ] 0、结果:Num = 200 、Num1 = 100

B:引用值-堆数据heap [ 赋值 、给地址 ]

var arr [ 1, 2]; var arr1 = arr; 现在用数组里的一个方法 push 一个数进去 arr.push(3);

些时 2 个一起变结果都是 [1, 2, 3]

如果没 push 让 arr = [ 3, 4 ] 这时你指你的房间、我指我的房间

arr = [ 3, 4 ] | arr1还 = [ 1, 2 ]

将 D 指向 C 的空间地址、这叫引用传值 [ var C = { 对象 }; var D = C; ]

将 A 的值copy一份放到B的空间、这叫赋值传值 [ var A = 5; var B = A; ]

[ ❆ ] 1、array-数组

[ ❆ ] 2、object-对象

[ ❆ ] 3、function

[ ❆ ] 4、date

[ ❆ ] 5、RegExp正侧表达式

[ ❆ ] 6、 换值游戏:var a = 123; 、var b = 234;

[ ❆ ] 7、方法1、利用中间变量、var c = a; a = b; b = c;

[ ❆ ] 8、方法2、a = a + b; b = a - b; a = a -b;

数组类型同对象类型使用的是引用传值、其它赋值传值



您可能还会对下面的文章感兴趣: