Open zhuanyongxigua opened 5 years ago
我的github博客 https://github.com/zhuanyongxigua/blog
在JS中,引用数据类型转换为原始数据类型转换只有三种情况:
换一种方式来表达,在JS中,所有的数据都可以去转(注意这里的用词,是“转”,不是“转成”)布尔值、数字和字符串(并不一定能成功)。
转成布尔值
非常简单,除了undefined、null、“”、NaN、0、-0、false之外,全都是true。
转成字符串
也非常的简单,需要注意的有四个:数组、对象、函数、symbol。
其实重要的就是数组和对象。
function fn() { console.log("Hello World"); } console.log(String([1, 2])); // "1,2" console.log(String({})); // "[object Object]" console.log(String(fn)); // "function a() {window.runnerWindow.proxyConsole.log(\"Hello World\");}" console.log(String(Symbol('foo'))); // "Symbol(foo)"
转成数字
在JS中,转数字比较复杂。常用的转换数字的方法有:Number、parseInt和parseFloat。其中Number在转字符串的时候如果遇到有非数字的东西,会返回NaN,所以也被称为强制转换。另外两个是从左到右一位一位的转换,所以也被成为非强制转换。
NaN
Number方法
与一元操作符+的效果相同。即Number("1")与+"1"相同。
+
Number("1")
+"1"
如果是四则运算,字符串的优先级最高,数字第二。意思就是如果相加的遇到了字符串,则不是字符串的转化为字符串,如果没有字符串,有一个数字,则不是数字的转化为数字。
简化版:
// 1, 1 == "1"; // true 1 == true; // true // 2, var obj1 = {} var obj2 = {} var obj3 = obj1 obj1 == obj2 // false obj1 == obj3 // true // 3, {} == "{}" // false,对象{}转化为字符串是"[object Object]" // 4, null == null // true undefined == undefined // true null == undefined // true "" == null // false NaN == NaN // false
我的github博客 https://github.com/zhuanyongxigua/blog
数据类型的转换
在JS中,引用数据类型转换为原始数据类型转换只有三种情况:
换一种方式来表达,在JS中,所有的数据都可以去转(注意这里的用词,是“转”,不是“转成”)布尔值、数字和字符串(并不一定能成功)。
转成布尔值
非常简单,除了undefined、null、“”、NaN、0、-0、false之外,全都是true。
转成字符串
也非常的简单,需要注意的有四个:数组、对象、函数、symbol。
其实重要的就是数组和对象。
转成数字
在JS中,转数字比较复杂。常用的转换数字的方法有:Number、parseInt和parseFloat。其中Number在转字符串的时候如果遇到有非数字的东西,会返回
NaN
,所以也被称为强制转换。另外两个是从左到右一位一位的转换,所以也被成为非强制转换。Number方法
与一元操作符
+
的效果相同。即Number("1")
与+"1"
相同。如果是四则运算,字符串的优先级最高,数字第二。意思就是如果相加的遇到了字符串,则不是字符串的转化为字符串,如果没有字符串,有一个数字,则不是数字的转化为数字。
数据类型的比较(隐式转换)
简化版: