一篇文章进行Javascript类型转换(常见的面试)

一篇文章进行Javascript类型转换(常见的面试)
你为什么要说这件事面试使我有了发言的动力。

以下问题如下:
var bool =新的布尔(假);
如果(bool){
警报(真实的);
{人}
警报(假);
}
运行结果是正确的!!!

其实,什么样的变换,算符优先啊,这些东西都是最基本的。有详细介绍犀牛的书。但是我很少去前5章的犀牛书。

例如,优先级块,有很多书,我们不必去教育,背诵优先顺序,不确定,括号内的线。

但现实是什么这个问题将在面试中公布。让你去做吧,我真的不知道这个问题的意思是什么。

至此,本文试图解决类型转换的问题,试着背诵JS权威指南的49页。

什么是假价值

总共6个:
0或+ 0,- 0,楠


未定义
无效的
以上订单按基本类型排列。

除此之外!即使它是以下形式:
无穷
0假、(空格)
任何引用类型:{ }、函数(){ }。
正确理解(b)是B执行表达式求值,然后转换为布尔类型的方法

它是一种短路语法,它在评估之后不一定是布尔类型,但它不是两边转换的布尔值的重运算

例如,23的结果是3,而不是真的。

因此,如果(b),我们通常理解,如果A和B同时是真的,是一种错误的描述方式。

其他基本类型被转换成字符串,这些字符串基本上与预期的相同。
console.log(+空); / /空
console.log(+定义); / /定义
console.log(+假); / /假
console.log(+真实); / /真实
console.log(0 ); / / 0
console.log(+南); / /南
console.log(+无限); / /无限
其他基本类型转换成数字,需要特殊内存
console.log(+无效); / / 0
console.log(+定义); / /南
console.log(+假); / / 0
console.log(+真); / / 1
console.log(+); / / 0
console.log(+ 1); / / 1
console.log(+ '1x '); / /南
其中NULL为空字符为0,未定义字符为楠。

在上面,基本类型转换是理解的。

下面是参考类型到基本类型的转换。

引用类型转换为布尔值,总是正确的。

引用类型到字符串

1。首先调用toString方法(如果有)是否返回的结果是原来的类型,如果是这样的话,把它变成一个字符串并返回。

2。否则,调用valueOf方法(如果有)看看返回结果是原始类型,如果是这样的话,把它变成一个字符串并返回。

三.另一个是错的。

引用类型转换为数字

1。首先调用valueOf方法(如果有),看看它返回的结果是基本类型,如果是这样的话,转化成一个数字,返回。

2。否则,调用toString方法(如果有),看看它返回的结果是基本类型,如果是这样的话,转化成一个数字,返回。

三.另一个是错的。

首先,让我们看看常见的引用类型,ToString和价值的回报,是吗
var = { };
Console.dir((a.tostring)); / / {物}
Console.dir((a.valueof)); / /对象本身
var = { 1, 2, 3 };
Console.dir((b.tostring)); / / 1,2,3
Console.dir((b.valueof)); / /对象本身
var = { 1 },{ 2 } };
Console.dir((c.tostring)); / / 1,2
Console.dir((c.valueof)); / /对象本身
函数(){返回2 };
Console.dir((d.tostring)); / /功能({ 2 }返回)
Console.dir((d.valueof)); / /对象本身
因此,相应的转换成字符串和数字是:
var = { };
console.dir(+ ); / / {物}
console.dir(+); / /南
var = { 1, 2, 3 };
Console.dir(B + ); / / 1,2,3
console.dir(B); / /南
C = { 1 },{ 2 } };
Console.dir(C + ); / / 1,2
console.dir(C); / /南
函数(){返回2 };
Console.dir(D + ); / /功能({ 2 }返回)
console.dir(d); / /南
又一例错误:
var = { };
a.tostring =功能({ return){ } };
(console.log +); / /错误
console.log(+) / /报错
上述类型的转换规则基本完成。

最后,为了政府的邪恶

面试问题如下:
var = false;
未定义的;
如果(a = b){
警报(真实的);
{人}
警报(假);
}
我以为它会突然出现,上帝!为什么是错误的

哈哈 u3002 u3002 u3002

一个双标志,如果双方的类型不同,将有一个隐式转换。75页的犀牛书概述如下:

1,null和未定义的,相等的。

2,数字和字符串,转换成数字重新比较。

3,如果有真或假,转换为1或0,然后比较。

4,如果有一个引用类型,值为第一。

5,其余的不相等。

所以有:
console.log(定义= = false); / /假
console.log(空= = false); / /假
console.log(假= = 0); / /真的
console.log(南= = false); / /假
控制台= FALSE)
0 = false是真的,根据第三。

根据第第三条,false是真的=,根据第二个,变成 = 0。

第四个是另一个例子。
console.log({ { 2 } } = 2)
结果是正确的,如下所示:

价值{ { 2 } }是对象本身,而不是基本类型。

试图调用ToString结果2。

所以变成了2号'2'and比较。根据第二,equal.wtf!!

最后说,没有这样的问题。

这是一篇介绍给你萧边把Javascript类型转换(常见的面试)。希望能对你有所帮助。如果你有任何问题,请给我留言,萧边会及时给您回复。谢谢您支持网站
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部