forever-z-133/blogs#13
其实这里面的坑实在是有点多,比如等于判断,大小判断,入参类型转换,运算时类型转换等等。
等于判断时,是会去先转为相同数据类型,再判断的。
Array -> String -> Number -> Boolean 有顺序的。
0 == '0'; // true,转为 0 == 0
0 == []; // true,转为 0 == '' 再转 0 == 0
'0' == []; // false,转为 '0' == ''
'0' == true // false,转为 0 == true 再转 false == true
也是要先转为相同数据类型再比较的,但有很多令人费解的地方。
特别是两个字符串的大小比较,至今不懂其中规律,虽然不会这样去玩。
'1' > '-1'; // true,实则为 1 > -1,反例 '1' > '1.1' 为 false
'a' > 'A'; // true,实则为 97 > 65,反例 'a' > 'b' 为 false
'a' > -1; // false,这里不知是不是转成了 NaN > -1
'a' > ''; // true,这个也不知是不是 97 > undefined
所以这会造成下面这种结果:
[-1] > 0; // false,实为 -1 > 0
[-1] > ''; // true,实为 '-1' > ''
再者,undefined、null 和 NaN 一直都很特别。
undefined == undefined; // true
undefined <= undefined; // false,怀疑是 0 <= undefined 在比较
null > 0; // false
null == 0; // false
null >= 0; // true
NaN > -1; // false,NaN 基本无法被比较
NaN == NaN; // false
比如 Number 和 Math 相关的方法,都会进行数字化转化等。
没仔细整理过,就不多逼逼了。
+' 014' // 14
+'0x12' // 18
1 + '14' // '114'
1 + '0x12' // '10x12'
1 + +'14' // 15
'14' + 1 // '141'
1 + [1, 1]; // '11,1'
1 + {}; // '1[object Object]'
1 + null; // 1
1 +undefined; // NaN
++'14' // ReferenceError
Infinity+Infinity; // Infinity
-Infinity+(-Infinity); // -Infinity
Infinity+(-Infinity); // NaN
+0+(+0); // 0
(-0)+(-0); // -0
(+0)+(-0); // 0
本文向大家介绍请你来说一说C++中的隐式类型转换?相关面试题,主要包含被问及请你来说一说C++中的隐式类型转换?时的应答技巧和注意事项,需要的朋友参考一下 首先,对于内置类型,低精度的变量给高精度变量赋值会发生隐式类型转换,其次,对于只存在单个参数的构造函数的对象构造来说,函数调用可以直接使用该参数传入,编译器会自动调用其构造函数生成临时对象。
本文向大家介绍说说你了解的类型转换?相关面试题,主要包含被问及说说你了解的类型转换?时的应答技巧和注意事项,需要的朋友参考一下 reinterpret_cast:可以用于任意类型的指针之间的转换,对转换的结果不做任何保证
本文向大家介绍举例说说你对white-space属性的理解相关面试题,主要包含被问及举例说说你对white-space属性的理解时的应答技巧和注意事项,需要的朋友参考一下 控制文本内容如何展示。 值 说明 normal 默认。空白会被浏览器忽略。 pre 空白会被浏览器保留。其行为方式类似 HTML 中的 标签。 nowrap 文本不会换行,文本会在在同一行上继续,直到遇到 标签为止。 pre-w
本文向大家介绍说说你对css盒子模型的理解相关面试题,主要包含被问及说说你对css盒子模型的理解时的应答技巧和注意事项,需要的朋友参考一下 盒子模型分为ie盒子模型和标准盒子模型 ie盒子模型 padding+content+border border-box 标准盒子模型 content content-box
本文向大家介绍说说你对数据类型转换的理解是什么?类型转换的方法有哪些?相关面试题,主要包含被问及说说你对数据类型转换的理解是什么?类型转换的方法有哪些?时的应答技巧和注意事项,需要的朋友参考一下 这个题有点大,,,写几个常用的吧 String to Number Number(str) +str Number to String toString(num) ''+num All to Boolea
本文向大家介绍说说你对js包装对象的理解相关面试题,主要包含被问及说说你对js包装对象的理解时的应答技巧和注意事项,需要的朋友参考一下 包装对象是用来处理基础类型数据的对象,使得字符串、布尔值等变量可以直接调用方法,在对字符串、布尔值进行方法调用的时候,js引擎会自动创建一个包装对象,将操作的值作为原始值,这一过程是隐式的。但是数字类型除外,想要调用数字对象的方法必须显示创建一个Number对象,