Javascript的数据
类型分为空、未定义、布尔、串、数、对象六类。
对象是引用类型,和其他五种基本类型和原始类型。我们可以使用typeof
方法打印到这一型属于不同类型的变量进行比较的第一类型,称为类型
转换和类型转换被称为隐式转换,隐式转换
运算符通常发生在平等,少不加,减,乘,除,等超过。
/ /类型和字符串
Typeof(11) / /数量
11< 4 假/假
1。基本类型转换
第一个加、减、乘、除:
1。字符串增加数字,数字变成字符串。
2。数字还原字符串,字符串的数目。如果字符串不是一个单纯的数字,它将转向南。弦数减少是一样的。两串并转换成数字减去。
三.乘数,除此之外,大于,小于相同变换的减法。
隐式转换+
10 + 20 / / 2010
—
10 / / 20'10
10话 / /南
10 '100a ' / /南
* /
10×20的 / / 200
10×20的 / / 200
20 / / / 2米
20 / / / 2米
20 / / /南话
4。加法
操作序列是敏感的
这样的混合表达式有时会混淆,因为Javascript对操作
顺序很敏感。例如,表达式1 + 2333
除了左侧(即左结合性),因此,它相当于下面的公式:(1 + 2)+ 3 / 33
相反,对于字符串123,1 + + 3:2,123 结果表示。左绑定法是等价的,所以表达式左侧的加法操
作用括号括起来。
看一组=5。
1)未定义等于空。
2)。当字符串和数字进行比较时,字符串数字
3)。当数字为布尔比较时,布尔转数
4)。当字符串与布尔值比较时,两个数字都转为数字。
未定义的
0= 0;真正的字符串到数字
0 = false; true,布尔到数字
0= false; true,两个数字
空=假;
未定义的
7个
错误值:false,0,- 0,楠,null和未定义,所有其他值
都是真的。
6,南,不是数字
南是一个特殊值,表明一些算术运算的结果,如负数的平方根,不是数字。方法parseInt()和parseFloat()返回这个值时,不能指定的字符串进行分析。这种方法也可以用于一些
函数,返回到正常的案件的有效数字和误差,是由解释number.nan。
Math.sqrt(2)
Math.log(1)
0 0
ParseFloat('foo)
很多Javascript初学者,第一个陷阱是调用的返回结果时,你通常不认为:
console.log(typeof南); / /数
在这种
情况下,楠并不意味着它是一个数字,它的类型是一个数字,你明白吗
因为typeof返回一个字符串,有六种:数字、字符串、布尔值、对象、
功能、定义
保持冷静,因为这里有很多乱七八糟的东西:
var x = Math.sqrt(2);
var y = math.log(- 1);
console.log(x = y); / /假
也许这是因为我们不使用严格的等价(= =)吗显然不是。
var x = Math.sqrt(2);
var y = math.log(- 1);
console.log(x = y); / /假
直接比较两个南方怎么样
console.log(南=南); / /假
因为有很多方法来表示一个非数字,所以一个非数字不等于另一个非数字的南方,它仍然有一些
原因。
但是,当然,
解决的办法是,让我们在全球的功能isnan一看:
console.log(isnan(南)); / /真的
好的,但isnan()有很多自身的缺陷,也。
console.log(isnan(你好)); / /真的
console.log(isnan({ x }) / /真实);
console.log(isnan({ }) / /真实);
有许多不同的解决方案,其中之一是利用南方的非反射特性(例如,看看
工具包剑桥的注释)。
var
IsNaN:函数(x){ return x = x;}!
}
幸运的是,在接下来的ECMAscript 6,有一个number.isnan()方法,提供了一个可靠的NaN值
检测。
换句话说,只有当
参数是真正的南方时,它才会返回true。
console.log(number.isnan(南)); / /真的
console.log(number.isnan(Math.sqrt(2))); / /真的
console.log(number.isnan(你好)); / /假
console.log(number.isnan({ x }) / /假);
console.log(number.isnan({ }) / /假);
两。引用类型转换
基本类型比较简单,
参考类型和基本类型比较比较复杂。首先,我们应该将引用类型转换为基本类型,然后根据上面的方法进行比较。
1。引用类型布尔为真。
例如,一个空数组,只要对象是引用类型,那么{ }真的。参照型转移到价值或toString()。对象继承的valuof toString()和(),也可以自定义值()和toString()。根据不同的对象、继承的价值()转换成一个字符串,一个数字或本身,和对象变成一个toString字符串。一般对象调用的值()
默认情况下。
1)。当对象变成数,值被称为();
2)。当对象被转移到一个字符串,toString()称为;
请看下面的示例。
0 = = 0 = = {}; / /真的,{ }。值(0);我= = 0;
0= {}; / /假,'0' = { }。toString;0= =(我);
2 = = 2 = = { 2}; / /真的,{ 2}。值(2);有时我2 = = 2 = = 2;
2= = { 2 }; / /真的,2= { 2 }。toString(2= = 2);我;
{ = } =!; / /真的,{ }。值(布尔)= =!({)- > 0 false 0 = 0 = i = i;
当对象变成一个数,它要求值(),即toString()在这之前;所以我猜valueOf方法是这样的。上面这样= = 0 { }改变更合理的例子。在任何情况下,最后变成0 { }。
VaR值=函数(){()
var = this.tostring(STR); / /第一次调用toString(),为一个字符串
…
}
0 = = 0 = = {}; / /真的,{ }。值(0);0- > 0 > = = = = 0;
自定义值和toString()();
自定义值()和toString()的存在,和()被调用默认值;
如果只有toString(),然后调用toString();
var = { 1 };
a.valueof =函数(){ return 1;}
a.tostring =函数(){ return 1;}
+ 1; / / 2(价值),第一个电话
删除值()和调用toString()。
var = { 1 };
a.valueof =函数(){ return 1;}
a.tostring =函数(){ return 1;}
+ 1; / / 2,第一个电话为()
摆脱 / /价值
删除a.valueof;
+ 1; / /会,叫toString()
如果你回到会议的其他部分呢
var = { 1 };
a.valueof =函数(){ return;}
a.tostring =函数(){ return 1;};
1;
其他对象调用的值()分为不同的类型:
var = { };
A.valueOf( / /对象){ };
var = { };
(a.valueof) / / { }本身;
var =新
日期();
A.valueOf(); / / 1423812036234号
var a = new RegExp();
(a.valueof); / / / /规则物体(:)
引用类型之间的比较是
内存地址的比较,并且不需要隐式转换,这里没有什么要说的。
{错误地址是不一样的
var = { };
乙=;
b = /真
2。显式转换
显式转换比较简单,可以直接用类作为方法转换。
编号({);0
字符串({ });
布尔({)}; /真
还有更简单的转换方法。
3 / /串3
+ 3 / 3号
3/真!!
以上是本文的全部内容,
详细介绍了javascript的隐式强制转换,希望能对大家有所帮助。