JavaScript中的一些隐式转换和总结(推荐)
js中不同数据类型之间的比较和转换规则如下:
1.对象和布尔值之间的比较
将对象与布尔值进行比较时,对象首先转换为字符串,然后转换为数字,布尔值直接转换为数字
[]==true;//false []转换为字符串“”,然后转换为数字0,0,true转换为数字1,所以是false2。对象和字符串之间的比较。
当对象与字符串进行比较时,对象被转换为字符串,然后两者进行比较。
[1,2,3]=='1,2,3 '/true[1,2,3]转换为' 1,2,3 ',再与' 1,2,3 '组合,所以结果为true;3.物体和数字的比较
将对象与数字进行比较时,首先将对象转换为字符串,然后转换为数字,再与数字进行比较。
[1]==1;//true `将对象转换为字符串,然后转换为数字,然后将两者进行比较[1]='1'=1,因此结果为true。4.字符串和数字之间的比较。
当一个字符串与一个数字比较时,该字符串被转换成一个数字,然后两者进行比较。
1'==1 //true5。字符串和布尔值之间的比较
将字符串与布尔值进行比较时,两者都会转换为数值,然后进行比较。
1'==真;//true6。布尔值和数字之间的比较
当布尔值与数字进行比较时,布尔值被转换为数字,并进行比较。
True==1 //true很多刚接触js的童鞋,看到这么多转换规则就被圈起来了。其实规则很简单,每个人都可以写下这张图
如图所示,当任意两种类型进行比较时,如果不是同一个类型,就会进行相应的类型转换,如图所示。如果将对象与布尔值进行比较,则对象=字符串=数值=数值。另外,我们来看一些需要特别注意的地方。
让我们来看一个有趣的问题
[]==false;[]==false;这两个结果都是真的。第一个是object=string=value 0 false转换为number 0。如果这是真的,应该没有问题。第二个有更多!则直接转换为布尔值,然后反转。当转换为布尔值时,空字符串('')、NaN、0、null和undefined都返回true,所以![]此[]=true被否定为false,因此[]==false为true。
有些事情需要记住,比如:
Undefined==null //true undefined与null比较时返回true,与其他值比较时返回false number (null)。//0曾经看到过这样的代码:(!(~ []) {})[ - [~ ''][ []]*[~ []] ~~![]] ({} [])[[~![] * ~ []]=sb,你敢相信宝宝当时被震惊了。
刚接触到Js的时候,很迷茫。正是因为它的‘善变’。让我总结如下:
7.js的数据类型:数字、布尔、字符串、未定义、空、符号(es6新定义)和对象(注意:数组是一个特殊的对象)
Typeof返回7种类型:数字布尔字符串对象未定义的对象函数
MDN引入Javascript: JavaScript如下:Javascript是弱类型或动态语言。这意味着你不必提前声明变量的类型,类型会在程序运行过程中自动确定。这也意味着您可以使用相同的变量来保存不同类型的数据
8.让我们看看常见的隐式转换:
基本类型:
运算符(,-,*,/,%)操作时的类型转换
" "符号运算符:
总结:当使用加号运算符、String等类型时,其他类型会转换为String;在其他情况下,它们都转换为数字类型。注意:undefined转换为Number为‘NaN’,Number和NaN的任何和都是NaN。
其他运算符,基本类型转换为Number,字符为‘1a’和‘a1’的String类型转换为NaN,与undefined相同。
提示:(1) NaN不等于任何值,包括本身,所以判断一个值是否是NaN,也就是用'!=='就可以了。
(2)转换为布尔类型false的为空,0 ' ',未定义,NaN,false
(3)Number()和parsent()都可以将对象转换为Number类型,而且Number函数比parsent函数严格得多。基本上,只要一个字符不能转换成数值,整个字符串就会转换成NaN。
对象类型
当在基本类型上操作对象时:
var obj={ tostring : function(){ return 6;},valueOf:函数(){ return 5;}};var obj 1={ value of : function(){ return ' a ';},toString:函数(){ return ' b}};
用Number()和String()转换对象和对象1时,
总结:数字类型会先调用valueOf(),字符串类型会先调用toString()。如果结果是原值,则返回原值;否则,它将继续使用toString或valueof()并继续计算。如果结果不是原始值,它将引发类型错误。
请看以下内容:
为什么{} []=0?因为javascript在运行时第一次将{}视为空代码块,所以它相当于[]=0。还有{} 5=5,也是如此。
摘要:
1.类型转换可能会隐藏类型错误。
2." "可以表示字符串连接和算术加法,这取决于它的操作数。如果一个是字符串,那么它就是字符串连接。
3.对象通过valueOf方法将自身转换为数字,通过toString方法将自身转换为字符串。
4.对于使用valueOf方法的对象,应该定义一个相应的toString方法来返回相等数字的字符串形式。
5.当检测到一些未定义的变量时,我们应该使用typeOf或将其与undefined进行比较,而不是直接使用真值。
摘要
以上是边肖介绍的JavaScript中的一些隐式转换和总结(推荐)。希望对大家有帮助。如果你有任何问题,请给我留言,边肖会及时回复你。谢谢您的支持!
版权声明:JavaScript中的一些隐式转换和总结(推荐)是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。