JavaScript是一种弱类型或者说是动态语言。这意味着不用提前声明变量数据类型,在程序运行的过程中,变量的类型会被自动确定。
var age = 10; //这是数字型
var str = 'Hello World!'; //这是字符串型
在代码运行时,变量的数据类型是由JS引擎根据 = 右边变量的值的数据类型来确定的。
JavaScript拥有动态类型,同时也意味着相同的变量可用作不同的类型。
var x = 6; //x为数字型
var x = 'Bill'; //x为字符串型
JS把数据类型分为两类:
- 简单数据类型:Number,String,Boolean,Undefined,Null
- 复杂数据类型:object
数字型三个特殊值
infinity,代表无穷大,大于任何数值
-infinity,代表无穷小,小于任何数值
NaN,not a number,代表一个非数值
console.log(Number.MAX_VALUE * 2); //infinity 无穷大
console.log(-Number.MAX_VALUE * 2); //-infinity 无穷小
console.log('Hello' - 100); //NaN
isNaN() 这个方法用来判断非数字,并且返回一个值,如果是数字,返回的是false,如果不是数字,返回的是true
console.log(isNaN(12)); //false
console.log(isNaN('Hello')); //true
字符串转义符,都是以\开头的
转义符 | 解释说明 |
---|---|
\n | 换行符,n是newline的意思 |
\\ | 斜杠\ |
\’ | 单引号 |
\" | 双引号 |
\t | tab缩进 |
\b | 空格,b是blank的意思 |
字符串的拼接
- 多个字符串之间可以使用 + 进行拼接,其拼接方式为 字符串 + 任何类型 = 拼接之后的新字符串
- 拼接前会把字符串相加的任何类型转成字符串,再拼接成一个新的字符串
console.log('沙漠' + '骆驼'); // 沙漠骆驼
console.log('我今年' + 18); //我今年18
console.log('Hello' + true); //Hellotrue
console.log('12' + 12); //1212
布尔型
true参与加法运算当1来看
false参与加法运算当0来看
var flag = true;
var flag1 = false;
console.log(flag + 1); //2
console.log(flag1 + 1); //1
undefined 如果一个变量声明未赋值,就是undefined 未定义数据类型
var str;
console.log(str); //undefined
console.log(str + 1); //NaN
// null 空值
var space = null; //一个声明变量给null值,里面的值为空
console.log(space + 1); // 1
获取变量数据类型
typeof
var num = 10,
str = 'Hello',
flag = true,
vari = undefined,
timer = null;
console.log(typeof num); //number
console.log(typeof str); //string
console.log(typeof flag); //boolean
console.log(typeof vari); //undefined
console.log(typeof timer); //object
// prompt取的值是字符型的
var age = prompt('请输入您的年龄'); //18
console.log(age); //18
console.log(typeof age); //string
数据类型转换
使用表单、prompt获取的数据默认是字符串类型的,此时不能直接进行加法运算,而需要转换变量的数据类型,通俗来说,就是把一种数据类型的变量转换成另一种数据类型。
转换为字符串
方式 | 说明 | 案例 |
---|---|---|
toString() | 转成字符串 | var num = 1; alert(num.toString()); |
String()强制转换 | 转成字符串 | var num = 1; alert(String(num)); |
加号拼接字符串 | 和字符串拼接的结果都是字符串 | var num = 1; alert(num + ‘我是字符串’); |
var num = 10;
console.log(typeof num.toString()); //String
console.log(typeof String(num)); //String
//利用 + 拼接字符串的方法 也称为隐式转换
console.log(num + ''); //String
转换为数字型
方式 | 说明 | 案例 |
---|---|---|
parseInt()函数 | 转换为整数数值类型 | parseInt(‘78’) |
parseFloat()函数 | 转换为浮点数数值类型 | parseFloat(‘78.21’) |
Number()强制转换函数 | 转换为数值型 | Number(‘12’) |
JS 隐式转换(- * /) | 利用算术运算隐式转换为数值型 | ‘12’ * 1 |
//parseInt() 可以把字符型转换为数字型 得到的是整数
console.log(parseInt('3.14')); // 取整 3
console.log(parseInt('3.94')); // 取整 3
console.log(parseInt('120px')); //120 会去掉px这个单位
console.log(parseInt('rem120px')); //NaN
//parseFloat() 可以把字符型转换为数字型 得到的是浮点数
console.log(parseFloat('3.14')); //3.14
console.log(parseFloat('120px')); //120 会去掉px这个单位
console.log(parseFloat('rem120px')); //NaN
//利用 Number(变量)
var str = '123';
console.log(Number(str)); //123
console.log(Number('12')); //12
//利用算术运算 - * / 隐式转换
console.log('12' - 0); //12 数值型
console.log('12' * 1); //12 数值型
console.log('123' - '120');//3 数值型
转换为布尔型
方式 | 说明 | 案例 |
---|---|---|
Boolean()函数 | 其他类型转换为布尔型 | Boolean(‘true’); |
代表空、否定的值会被转换为false,如’ '、0、NaN、null、undefined
其余值都会被转换为true
console.log(Boolean('')); //false
console.log(Boolean(0)); //false
console.log(Boolean(NaN)); //false
console.log(Boolean(null)); //false
console.log(Boolean(undefined)); //false
console.log(Boolean('小白')); //true
console.log(Boolean(12)); //true