我们都知道JavaScript是一种弱类型(或动态类型)的语言,即变量的类型是不确定的。
var num=123//123 var num=' HAHAHAHA ' num;//‘hahaha 123’在上面的代码中,变量num一开始是一个数值,后来变成了一个字符串。变量类型完全由当前值决定。这种类型称为弱类型。
我们知道,在编程语言中,数据本身和操作之间是有类型的。
在强类型编程语言中,不同类型的变量不能直接操作。
但是,在弱类型语言中,可以直接添加不同类型的变量,因此在操作中需要转换数据的类型。在大多数情况下,这种数据类型的转换是自动的,但有时需要手动强制转换。
在转换数据类型之前,让我们看一下JavaScript的数据类型。
5中的基本数据类型:数字、字符串、布尔值、未定义、unll。复杂的数据类型:对象。有时当我们需要知道一个变量的数据类型时,我们可以通过typeof()对其进行操作。返回值的类型是字符串。
scriptvar arr=[undefined,true,' world ',123,null,new Object,function(){ }]for(I=0;一、长度;I){ console . log(type of(arr[I]);}/script的输出结果是:undefined、boolean、string、number、object、object、function
Null是一种基本的数据类型,那么为什么输出是Object呢?这是因为null被认为是空的对象引用。只要记住。
函数不是数据类型,但是为什么函数类型在调用typeof后出现?从技术角度来看,函数就是对象。但是,有一些特殊的属性,所以有必要使用typeof来区分函数和对象。
显式转换的数据类型
1.将非数值转换为数值的函数
有三个函数可以将非数值转换为数值:Number()、parseInt()和parseFloat()。
第一个函数Number(混合)可以用于任何数据类型。该函数首先将mix的数据类型转换为数字类型,然后将mix的值转换为数值。
如果mix的值可以直接转换成数字,就会直接显示出来。如果不是,则显示0或NaN。
而另外两个函数专门用于将字符串转换为数值。
ParseInt(string)函数:将字符串转换为数值,不需要进行舍入。这里的字符串必须是数字类型的开始字符串,并且在遍历到非数字字符之前不会停止。如果NaN不是数字的开头,则显示NaN。
scriptvar num=['123 ',' 124.4 ',' 234asd ',' ASF 456 '];for(I=0;长度;I){ console . log(ParSeint(num[I]);}/脚本执行结果为:123,124,234,NaN。
Parseflow(字符串):将字符串转换为浮点数。从数字位的开始到非数字位的结束,其用法与parseInt(字符串)相同。
ParseInt()函数还有另一种用法。ParseInt(字符串,基数):根据基数将字符串转换为十进制整数。基数的值是2-32。
2.将其他类型的数据转换为字符串类型的函数
有两个函数可以将其他数据类型转换为字符串。ToString()和String()。
String(mix):将mix转换为字符串类型。该函数可以将任何数据类型的值转换为字符串。
toString()函数有两种用途。
用法1: demo.toString():将demo转换为字符串类型。Demo不能等于null未定义用法2: demo.toString(基数):将十进制数demo转换为目标数。例如,123.0.toString(8)是一个将十进制数123转换为八进制数的字符串。注意:不能写成123.toString(8),因为浏览器会解析成小数。
//示例:将二进制数10001000转换为十六进制数。
//想法:先把二进制转换成十进制,再从十进制转换成十六进制。
var num1=parseInt('10001000 ',2);//136 var num 2=num 1 . ToString(16);//'88' 3.将该值转换为布尔值类型
布尔(变量):将一个值转换为其对应的布尔值。
(1)原始类型值转换方法
以下六个值的转换结果为假,其他值均为真。
未定义的null -0 0 NaN ' '(空字符串)(2)对象的转换规则
所有对象的布尔值都为真,即使是假对应的布尔对象也为真。
布尔值(new oolean(false))//true请注意,空对象{}和空数组[]也将转换为true。
布尔([]);//TrueBoolean({ });//真正的隐式数据类型转换
隐式类型转换在系统执行操作时自动执行,但调用的方法都是显式类型转换方法。
1.递增和递减运算符
一,一,一,一
这四个运算符适用于任何值,也就是说,它们不仅适用于整数,还适用于字符串、布尔值、浮点值和对象,具有隐式数据类型转换。
也就是说,变量通过number()转换为Number的数据类型,然后执行递增和递减操作。
2.()(-)是标志
不仅对于整数,对于字符串、布尔值、浮点值和对象也是如此。变量通过number()转换为Number的数据类型。
3.isNaN(变量)
执行过程如下:首先用Number转换变量,然后执行isNaN()。
4.()加号
先看看下面的代码
脚本var str=1“1”;var num=1 1var num1=1 falsedocument.write(str,' br ',num,' br ',num 1);/script的执行结果为:11,2,1
所以加法有两个作用。如果无操作过程中没有字符串,则通过number()将变量转换为Number类型,然后执行操作。如果有字符串,加号的两边起到字符串连接的作用。
5.-*/%减号、乘号、除号和余数
操作时,将数据转换为数字类型,然后执行操作。
6、 || !与或运算
通过布尔()函数将运算符两边的值转换为布尔类型,然后执行运算。不同的是| |比较后返回原来的值,而!该操作返回一个布尔值。
看一个例子。
script console . log(5 ^ 3);//从左到右判断,如果全部为真,则返回最后一个真值,如果有一个判断为假,则返回假值console.log(0 || 2)。//从左到右判断,返回第一个为真的值。如果所有的判断都完成了,所有的值都是假的,那么返回最后一个假的值。3);/script
返回的结果是:3,2,假。
7、====!比较运算符
当数字和字符串相对较大时,字符串将隐式转换为数字类型进行比较。当字符串大于字符串时,比较ascii码的大小。最后一次返回是一个布尔值
脚本//1)纯数字之间的比较警报(13);//true //2)比较数字字符串时,会转换为数字预警(“1”“3”);//true alert(' 123 ' ' 123 ');//false //3)纯字符串比较,首先转换为ascii码alert(' a ' ' b ');//真实警报(“ABC”“aad”);//false,更纯的字母会依次比较ascii码。//4)汉字比较提醒(‘I’。charCodeAt());//25105警报(')。charCodeAt());//30340警报('我的');//true,比较汉字并转换为ascii码。//5)当数字与字符串比较时,字符串就是数字。然后将数字字符串转换为数字报警(123 ' 124 ');//true,下面的代码显示124的ascii码是49,所以没有转换成ascii来比较alert('124 '。charCodeAt());//49 //6)当数字与字符串比较,字符串为不纯数字时,非数字字符串在转换为数字时会转换为NaN,NaN与数字比较时会返回false。警报(13'abc ')无论大小;//false/script这里是一个特例。
script//undefined no type conversion console . log(undefined==undefined);//true console . log(undefined==0);//false console.log(未定义的0);//false console.log(未定义的0);//false//null无类型转换console . log(null==null);//true console . log(null==0);//false console . log(null 0);//false console . log(null 0);//false console . log(undefined==null);//true console . log(NAn==NAn);//false。没有一个数字不等于任何东西,包括它自己的/script关于===的隐式类型转换,大家可以阅读blog://www . JB 51 . net/article/136521 . htm。
在项目工程中,如果用==来判断两个值是否相等,就会发生隐式类型转换。所以有非常大的漏洞。来解决这个问题。引入了===(绝对相等)和!==(绝对不相等)。
编写console.log脚本(1===' 1 ');//false console . log(1===1);//true/脚本摘要
以上是边肖介绍的JavaScript数据类型转换的总结,希望对大家有所帮助。如果你有任何问题,请给我留言,边肖会及时回复你。非常感谢您对我们网站的支持!