你为什么要说这件事面试使我有了发言的动力。
以下问题如下:
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类型转换(常见的面试)。希望能对你有所帮助。如果你有任何问题,请给我留言,萧边会及时给您回复。谢谢您
支持网站。