整理一下大学自学JS的笔记
** 基本类型**
- 数值类型 number NaN 也是 number 类型`
- 字符串类型 string 成对的单引号、双引号引起来的值
''空字符串
' '空格字符串
- 布尔类型 boolean true false
- undefined 类型 值只有 undefined,表示一个变量被声明了但没有被赋值
- null 类型 值只有 null,表示声明了一个变量,这个变量用于保存一个对象,只不过这个对象暂时还没出现,但后续一定会出现
- 对象类型 object 复合类型 {name:“yh”,age:“22”}
- ES6 新增类型 symbol
- console.log(typeof 变量名) 打印数据类型
-
- NaN 的数据类型是 number
- 数组(Array)的数据类型是 object
- 日期(Date)的数据类型为 object
- null 的数据类型是 object
- 未定义变量的数据类型为 undefined
算数运算符
加 +
减 -
乘 *
除 /
余 %
赋值
=
+=
-+
*=
/=
%=
关系运算符 所有的关系运算结果都是 boolean 值
>
<
>=
<=
== 值一样就行,不用管数据类型
===全等 一模一样 数据类型也一样
!=
!==全不等
逻辑运算符
-
与 &&
结果不一定是布尔值对于逻辑与运算,如果第一个操作数为true或者能隐式转换为true,运算结果为第二个操作数(第二个操作数是什么,结果就是什么),如果第一个操作数为false或者能隐式转换为false,运算结果为第一个操作数(第一个操作数是什么,结果就是什么),第二个操作数的式子不进行计算
-面试题
var a = 10; var b = a < 5 && a++; console.log(a,b);// 10 false 第一个式子是false,第二个式子就不执行了 var c = a < 5 && ++a; console.log(a,c);// 10 false
-
或 ||
结果不一定是布尔值对于逻辑或运算,如果第一个操作数为true或者能隐式转换为true,结果就为第一个操作数,如果第一个操作数为false或者能隐式转换为false,结果就为第二个操作数
-面试题
var a = 10; var d = a < 5 || a++; console.log(a,d);// 11 10 var d = a < 5 || ++a; console.log(a,d);// 12 12
-
非 !
非真即假 非假即真 结果为布尔值
自增自减
++ 自增1
-
a++
先取值再加1
var a = 10; var b = a++; console.log(a,b);//11 10 var c = 10; console.log(c++);//10
-
++a
先加 1 再取值var val = 5; var num = ++val; console.log(num,val);// 6 6 var num1 = 1; console.log(++num1);// 2
-
var d = 10; console.log(d++ + ++d + d + d++ + --d + d--);// 10+12+12+12++12=70 console.log(d);//11
-- 自减1
- a–
- –a
补充
一元运算符 + - !++ -- (因为+ -可以表示正负)
二元运算符 + - * / % > < >= <= == === != !== && ||
三元运算符 操作数1?操作数2:操作数3 操作数1:条件 操作数2:条件成立时执行的代码 操作数3:条件不成立 时执行的代码
运算符优先级
类型转换
-
强制(显式)转换
借助转换函数
Number() String() Boolean() parseInt() parseFloat()
Number()
- 字符串转数值 只要字符串不是数值都为
NaN
注意
console.log(Number("10 11"));//NaN console.log(Number(""));//0
console.log(Number(" "));//0
- 其他
console.log(Number(true));//1 console.log(Number(false));//0
console.log(Number(undefined));//NaN console.log(Number(null));//0
Boolean()
- 数值转布尔 只有
0
和NaN
转化为false
null
undefined
转化为布尔,全是false
- 字符串转化为布尔 只有空字符
''
串转化为false
parseInt()
- 从第一位开始检查,是数字就转换,直到一个不是数字的内容
- 开头就不是数字,那么直接返回
NaN
- 不认识小数点,只能保留整数
parseFloat()
- 从第一位开始检查,是数字就转换,直到一个不是数字的内容
- 开头就不是数字,那么直接返回
NaN
- 认识一次小数点
console.log(parseFloat("1.1.11"));//1.1 console.log(parseFloat(""));//NaN
console.log(parseFloat(" "));//NaN console.log(parseFloat(null));//NaN
console.log(parseFloat(undefined));//NaN //pareInt的后四个一样