1.数据类型简介
1.1 基本数据类型
基本数据类型有:Number (数字)、String(字符串)、Boolean(布尔值)、Undefined(未定义)、Null(空)
基本数据类型 | 说明 | 默认值 |
数值型(Number) | 数字型,包含整型值和小数点型值,如11,0.11 | 0 |
字符串(String) | 字符串类型,如“张三” | " " |
布尔值 (Boolean) | 布尔值类型,如true,false ,等价于1和0 | false |
未定义 (Undefined) | var a; 声明了变量a但是没有赋值,此时a=undefined | undefined(未定义的) |
空值 (Null) | var a = null;声明了变量a为空值 | null |
1.2 数据类型的判断
- typeof 可用来获取检测变量的数据类型
- 一般用来判断基本数据类型 不能判断引用数据类型
<script>
// 使用let关键字 定义字符串
let str1 = "你好!";
let str2 = 'aaa';
console.log(typeof str1);
console.log(typeof str2);
// 定义整数
let num1 = 111;
let num2 = 111.11;//四舍五入,保留2位
console.log(typeof num1);
console.log(typeof num2);
// 定义boolean类型
let flag = true;
console.log(typeof flag);
// 未定义类型
let a;
console.log(typeof a);
// 引用数据类型
let obj = new Object();
console.log(typeof obj);
</script>
结果如下:
2. 基本数据类型
2.1 数值型(Number)
- 该类型的表示方法有两种形式,第一种是整数,第二种为浮点数。
2.2 字符串(String)
- 在JS中字符串需要使用引号引起来。
- 使用双引号或单引号都行,但是不要混着用。
- 引号不能嵌套,双引号不能放双引号,单引号不能放单引号 。
- 字符串具有length长度,它可以返回字符串中字符的个数。
let str = 'hello world'
console.log(str.length);//空格也算一个长度。
结果如下:
2.3 布尔值 (Boolean)
- 布尔(逻辑)只能有两个值:true 或 false。
- true:表示真, false:表示假。
- 使用typeof检验一个布尔值时,会返回一个boolean。
2.4 未定义 (Undefined)
- Undefined类型的值只有一个,就是Undefined(未定义)。
- 当声明一个变量,但不给这个变量赋值时,它的值就是Undefined。
- 使用typeof检查Undefined值时,也会返回一个Undefined。
2.5 空值 (Null)
- Null的值只有一个,就是null(空值)
- null的这个值专门用来表示一个为空的对象
- 使用typeof检测一个null值时,会返回一个object(对象)
var a = null;
console.log(typeof a);
结果如下:
3. 数据类型的转换
1.转为字符串型
方式 | 说明 | 案例 |
toString() | 转成字符串 | var num =1; alert ( num.toString()); |
String() | 强制转换 转成字符串 | var num =1; alert ( String ( num )); |
加号拼接字符串 | 和字符串拼接的结果都是字符串 | var num =1; alert ( num +"我是字符串"); |
toString()
//toString():除了null和undefined之外的数据都可用toString转换
//语法:值.toString()
var num = 123;
num.toString(); //'123';
console.log(num);
var str = true;
str.toString(); // 'ture';
console.log(str);
//注意:null和undefined用toString转会报错
var res = null;
res.toString(); //Cannot read property , toString’of null
console.log(res);
var res2 = undefined;
res2.toString(); //TypeError: Cannot read property " toString’of undefined
console.log(res2);
String ()
//String():可以将任意类型的数据转为字符型
//语法:String(值)
//返回值:转换的内容加引号
var a = 123;
console.log(typeof a); //number
console.log(a);
console.log(typeof String(a)); //string
// 2. NaN
var b = NaN;
console.log(typeof b); //number
console.log(typeof String(b)); //string
// 3.null
var c = null;
console.log(typeof c); //objcet
console.log(typeof String(c)); //string
// 4.未定义类型的
var d = undefined;
console.log(typeof d); //undefined
console.log(typeof String(d)); //string
// 5.布尔值
var e = true;
console.log(typeof e); //Boolean
console.log(typeof String(e)); //string
加号拼接字符串
//隐式转换
//语法:值 + "";
var a = 123; //'123'
a = a + "";
var b = null; //'null'
b = b + "";
var c = undefined; //'undefined'
c = c + "";
console.log(a);
console.log(typeof a);//String
console.log(null);
console.log(typeof b);//String
console.log(c);
console.log(typeof c);//String
2.转数值型
Number()可以把任意值转换成数值,如果要转换的字符串中有一个不是数值的字符,返回NaN
- Undefined转number: 结果为NaN;
console.log(Number(undefined)); //NaN
var a;
console.log(Number(a)); //NaN
- 空字符串 转 number 结果为0
console.log(Number(" ")); //0
- 非空字符串 转 number 规则 如果字符串里 的内容全部是有效数字,那么就转成对应的有效数字,否则,转number后就是NaN.
var arr = "123";
console.log(Number(arr)); //123
var arr1 = "12.34";
console.log(Number(arr1)); //12.34
var arr2 = "12.34.56";
console.log(Number(arr2)); //NaN
var arr3 = "123bbb";
console.log(Number(arr3)); //NaN
var arr4 = "倒计时";
console.log(Number(arr4)); //NaN
//'注意:数字前面有零的就省率0'
var arr5 = '012345';
console.log(Number(arr5)); //012345 注意;如果前面有0的化就会默认隐藏掉
- null 转 number:
console.log(Number(null));//0
- 布尔 转 number 结果:
var a = Boolean(true);
console.log(Number(a)); //1
var b = Boolean(false);
console.log(Number(b)); //0
3.转布尔类型
等于flase的:
null undefined ''" 0 NaN
//等于flase的:
//null undefined '' 0 NaN
// 1.null
console.log(Boolean(null)); //false
// // 2. 0
console.log(Boolean(0)); //false
// // 3.''
console.log(Boolean("")); //false
// // 4.undefined
console.log(Boolean(undefined)); //false
// // 5.NaN
console.log(Boolean(NaN)); //false
等于ture的:数字 非空字符串 一个空对象 一个空数组
var a = 123;
console.log(Boolean(a)); //ture
// // 2.非空字符串
var b = "ajakdhjasfbdsi";
console.log(Boolean(b)); //ture
// // 3.空的一个对象
var c = {};
console.log(Boolean(c)); //ture
// // 4.空数组
var d = [];
console.log(Boolean(d)); //ture