*类型*
前六种数据类型是:Undefined、Null、布尔值(Boolean)、字符串(String)、数值(Number)、对象(Object)。ECMAScript6(es6)引入了一种新的原始数据类型Symbol,表示独一无二的值。它是JavaScript语言的第七种数据类型
基本数据类型
1.number 数值 (特殊的NaN(表示不是一个数值),任何数据和NaN运算返回的都是NaN)
2.string 字符串 用引号包括起来的就叫做字符串
3.Boolean 布尔值 只有true和false代表 是 与 非
4.undefined 比较特殊,代表未定义
引用数据类型(复杂数据类型)
对象(object)
1.null 引用数据类型占位符
2.array 数组
3.function 函数
4.包装类型
5.Symbol是ec6标准新增的,表示独一无二并且不可修改
1.如何判断数据类型(typeof)
console.log(typeof 111); //用空格隔开
console.log(typeof(111)); //用()括住
2.数据类型之间的转换
1.强制类型转换***
当要转换的值是至少有一个字符的字符串、非 0 数字或对象时,Boolean() 函数将返回 true。如果该值是空字符串、数字 0、undefined 或 null,它将返回 false。
Boolean(布尔)-把给定的值转换成Boolean型
1.字符串转Boolean
Boolean(""); //false --空字符串
Boolean("hello"); true --非空字符串
2.数字转Boolean
Boolean(50); //true --非零数字
Boolean(0); //false --零
Boolean(NaN); //false --NaN
3.其他类型转Boolean
Boolean(undefined); //false --undefined
Boolean(null); //false --null
Boolean(new object()); //true --对象
Boolean(Symbol()); //true --Symbol
2.Number-把给定的值转换成数字(可以是整数或者是浮点数)
1.Boolean型转数字
Number(true); // 1
Number(false); //0
2.字符型转数字
Number("1.2"); //1.2
Number("12"); //12
Number("1.2.3"); //NaN
Number("123ab"); //NaN
3.其他类型转数字
Number(undefined); //NaN --undefined
Number(null); //0 --null
Number(new object); //NaN -对象
Number([]); //0 -数组
Number(Symbol()); // Uncaught TypeError: Cannot convert a Symbol value to a number
3.String(value) - 把给定的值转换成字符串;
2 .其他显式的转换方式
true.toString(); //"true"
false.toString(); //"false"
*var a = 123;
a.toString();*
undefined.toString(); //Uncaught TypeError: Cannot read property 'toString' of undefined
null.toString(); //Uncaught TypeError: Cannot read property 'toString' of null
3. 隐式类型转换
(1) 不同类型的数据互相运算
123 + 'abc' // "123abc" 与字符串相加时,其他都转换为字符串,然后拼接
123 + 'abc' // "123abc" 与字符串相加时,其他都转换为字符串,然后拼接
123 + true // 124 boolean值计算时,true转换为1 ,false 转换为0
123 - false // 123
(2.)对非布尔值类型的数据求布尔值
有内容的字符串会转换成true
(3) 对非数值类型的数据使用一元运算符(即“+”和“-”)
+ {foo: 'bar'} // NaN
- [1, 2, 3] // NaN
1. 自动转换为布尔值
当JavaScript遇到预期为布尔值的地方(比如if语句的条件部分),就会将非布尔值的参数自动转换为布尔值。系统内部会自动调用Boolean()函数。
注意: 这里有个特殊情况 NaN != NaN //true
当使用 ! 或者 !! 运算符的时候,会默认转换为boolean类型
2. 自动转换为字符串
当JavaScript遇到预期为字符串的地方,就会将非字符串的数据自动转为字符串。系统内部会自动调用String()函数。
字符串的自动转换,主要发生在加法运算时。当一个值为字符串,另一个值为非字符串,则后者转为字符串。
3. 自动转换为数值
当JavaScript遇到预期为数值的地方,就会将参数值自动转换为数值。系统内部会自动调用Number函数。
除了加法运算符有可能把运算子转为字符串,其他运算符都会把运算子自动转成数值。
'5' - '2' // 3
'5' * '2' // 10
true - 1 // 0
false - 1 // -1
'1' - 1 // 0
'5' * [] // 0
false / '5' // 0
'abc' - 1 // NaN
undefined-1 //NaN
null - 1 //-1
'5' % '2'
一元运算符也会把运算子转成数值。
+'abc' // NaN
-'abc' // NaN
+true // 1
-false // 0