一、数据类型的检测
可以使用 typeof 检测定义变量的数据类型
var num=12;
var boo=true;
var str='你好';
var und;
var nul=null;
用打印在控制台输出变量的数据类型
console.log(typeof num);
console.log(typeof boo);
console.log(typeof str);
console.log(typeof und);
console.log(typeof nul);//object 只有null是object类型 其他基本数据类型都是自己的名字
还可以在window输入框内输入数据,在控制台打印输出,你输入的数据类型
var num = prompt('请输入一个数字');
console.log(typeof num);
只有null是object类型 其他基本数据类型都是自己的名字
二、数据类型的转换
1、其他类型转换为布尔 Boolean
null表示空 所以会被转换为false、undefined表示未定义 空 所以会被转换为false
console.log(Boolean(null)); //false
console.log(Boolean(undefined)); //false
1.数字类型转换Boolean
只有0会被转换为false 其他所有非0数字都会被转换为true
console.log(Boolean(1));
console.log(Boolean(0));
console.log(Boolean(3));
console.log(Boolean(-4));
2.字符串类型转换Boolean
只有空字符串会被转换为false,其他所有非空都会被转换为true
console.log(Boolean("郑佳一")); //true
console.log(Boolean("彭昌辉")); //true
console.log(Boolean("宁成")); //true
console.log(Boolean("扩大倒是非常cdajkfkjf123312!@#$%^&*()_+")); //true
console.log(Boolean("")); //false
2、其他类型转换为数字
1.Number
字符串通过number转换后,如果字符串中包含非数字字符,那么结果为NaN;NaN表示:不是一个数字类型
console.log(Number(true)); //1
console.log(Number(false)); //1
console.log(Number("李海鹏")); // NaN Not a Number
console.log(Number("3李海鹏")); // NaN Not a Number
console.log(Number("3")); // 3
console.log(Number("-3e2")); // 3
另外两个特例undefined和null会输出NaN和null
console.log(Number(undefined)); //NaN Not a Number
console.log(Number(null)); //null 空 0
2. parseInt
字符串转换为数字类型时,parseInt会从第一个开始检测如果遇到数字类型就保留继续往下检测,当遇到不是数字类型的就会停止检测。如果第一个遇到的就不是数字类型,会直接返回NaN
布尔类型(true,false)转换数字类型会直接返回NaN 同样的空值null也会返回NaN
console.log(parseInt("3李海鹏")); //3
console.log(parseInt("李3海鹏")); //NaN
console.log(parseInt(true)); //NaN
console.log(parseInt(null)); //
console.log(parseInt("3.555555555555")); //3
console.log(parseInt("3e2")); //3
console.log(parseFloat("3.强强强强555555555555")); //3
数字类型是可以计算的例如:
var num = 3;
console.log(Number(num) + 1);
是会先转换为数字类型再进行计算,而如果num变量的值不能够被转换为数字类型就会返回NaN或者报错
3、其他类型转换为字符串
1.String
会直接将其他类型里的所有内容转换为字符串包括特殊符号(*@#¥%)等
console.log(String(true));
console.log(String(123));
console.log(String(undefined));
2.toString
本义还是转换为字符串,只是拥有了可以将数字转换为不同的进制
var num = 5;
console.log(num.toString(2));
toString括号内的参数表示是几进制
4、隐式数据类型转换
部分数据类型会在浏览器里自动帮我们进行类型转换,比如加减乘除的隐式类型转换:
var str1='123';
var str2='456';
console.log(str1-str2);//-333
isNaN 是用来判断小括号里是不是NaN,如果是数字类型,输出false 反之则输出true:
console.log(isNaN(123));//false
console.log(isNaN('aa123'));//true
三、运算符
1. ( )优先级最高
2. 一元运算符 ++ -- !
3. 算数运算符 先* / % 后 + -
4. 关系运算符 > >= < <=
5. 相等运算符 == != === !==
6. 逻辑运算符 先&& 后||
7. 赋值运算符
1、常见的算数运算符(+,-,*,/)
var num1=10;
var num2=20;
console.log(num1+num2);//30
如果是数据类型加号会进行计算
var str1='10';
var str2='20';
console.log(str1+str2);//1020
console.log(str1-str2);//-10
console.log(str1*str2);//200
console.log(str1/str2);//0.5
如果加号两边有一个是字符串类型,就表示的是拼接作用,而(-,*,/)则会被浏览器进行隐式转换为数字类型,进行计算
2、取余运算符 %
他会输出余数,而如果余数为零表示可以被整除
console.log(15%6);//3
3、() 会提高优先级
先算括号里的,再算乘除,最后算加减
console.log((1+2+3)*(5/1)+6-8);
4、赋值运算符 =
它表示的是将等号右边的值赋值给左边的变量;等号右边的num表示的是值,左边的num表示的是num这个变量
var num = 10;
num = num + 5;
num = num - 5;
num = num * 5;
num = num / 5;
还可以进行简写
num += 5;
num -= 5;
num *= 5;
num /= 5;
5、自增自减运算符 ++
num++ 表示 num 自我增加1
num-- 表示 num 自我减少1
var num = 99;
num++;
num--;
符号在前和在后效果是不一样的
(1)符号如果在变量的后面表示 先将变量拿来使用 之后再自增
(2)符号如果在变量的前面表示 先自增 之后再将变量拿来使用
var num = 99;
console.log(num++ + 1);
console.log(++num + 1);
运算练习
var a = 6;
var b = 2;
var c = a++ - --b + ++a - 5 - --b + a++;
6、逻辑运算符 || 和 && 和 !
1.与 和 且 &&
(1)两个条件只要有一个不满足 最终的结果就是不成立 只有所有都成立 最终的结果才是成立;
(2)如果第一个条件 成立 那么会直接输出第二个条件;
(3)如果第一个条件不成立 那么就会直接输出第一个条件
console.log(true && false); // false
console.log(true && true); // true
console.log(false && false); // false
2.或 或者 ||
(1)两个条件只要有一个成立 最终的结果就是成立 如果都不成立 结果不成立
(2)如果第一个条件成立 就会直接输出第一个条件
(3)如果第一个条件不成立 就会直接输出第二个条件
console.log(true || false); // true
console.log(false || false); // false
console.log(true || true); // true
3.非、不是 、取反 !
(1)非只会对布尔值生效 非布尔值会先转换为布尔值再取反
(2)最终的结果一定是一个布尔值
console.log(!3);
7、关系判断运算符:>、<、==、>=、<=、!=、===、!==
关系运算符 最终输出的结果一定是一个布尔值 更像是一个判断条件
1.大于、小于、等于:>、<、==
一个 = 表示 赋值 == 表示等于
var num1 = 15;
var num2 = 9;
console.log(num1 > num2);
// 大于
console.log(num1 < num2);
// 小于
console.log(num1 == num2);
// 等于
2.大于等于、小于等于、不等于:>=、<=、!=
var num1 = 15;
var num2 = 9;
console.log(num1 >= num2);
// 大于等于
console.log(num1 <= num2);
// 小于等于
console.log(num1 != num2);
// 不等于
3.等于、全等于、不全等于:==、===、!==
等于 == 会将等号两边的内容 隐式转换成相同的数据类型
全等于 === 两边的内容必须完全相同 类型也必须相同
不全等于
console.log(1 == "1");
// 等于 ==
console.log(1 === "1");
// 全等于 ===
console.log(1 !== "1");
// 不全等于 !==
四、总结
本章对数据类型和各种运算符进行了总结,阐明了各种数据类型之间是如何进行转换的,以及对各种运算符的运用。