学习Javascript与我的隐含强制

学习Javascript与我的隐含强制
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的隐式强制转换,希望能对大家有所帮助。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部