----变量提升
console.log(num); //undefined
var num = 10;
在javascript中会先将变量进行声明 变量提升,然后再依次执行
----数据类型
javascript的数据类型7种:数值number | 字符串string | 布尔值boolean | 未定义或不存在undefined | 空值null | 对象object | 唯一标识符symbol
通常 数值、字符串、布尔值这3种类型合称为原始类型
--Number类型
浮点数的最高精度是17位小数 但是进行算术计算的时候精确度远不如整数
不要判断两个浮点数是否相等
NaN 表示非数字 NaN与任何值都不相等 包括它本身 NaN进行任何数学运算结果也是NaN
isNaN() 判断一个值是否是NaN 但是isNaN只对数值有效,如果传入其他值,会被先转成数值;例如,传入字符串的时候,字符串会被先转成NaN,所以最后返回true;也就是说,isNaN为true的值有可能不是一个NaN,而是一个字符串
在使用isNaN之前 最好先判断一下数据类型 或者利用NaN唯一不等于自身的值的特点 直接判断自身的值是否相等
isFinite() 判断某个值是否为正常的数值 除了Infinity、-Infinity、NaN和undefined这几个值会返回false,isFinite对于其他的数值都会返回true
--undefined和null
undefined表示一个声明了但是没有赋值的变量 变量只声明的时候 值默认是undefined
null表示空 变量的值如果想为null 必须手动设置
null在javascript中常见于释放内存空间 例如 var str = null
--类型判断
javascript有3种方法可以确定一个值是什么类型 typeof运算符 | instanceof运算符 | Object.prototype.toString方法
typeof 数值、字符串、布尔值分别返回number、string、boolean;undefined返回undefined null返回object
--数据类型转换
--转字符串
toString() | String() | 拼接字符串方式+
--转数值
Number() | parseInt(string,radix) | parseFloat(string) | 通过+ -0等运算(例如 var str='100'; console.log(+str); console.log(str - 0); console.log(-str) )
--转布尔值
Boolean() | !!
注意:只有''(空字符串) null undefined NaN 0 会转换成false 其他都会转换成true
----运算符
--算术运算符
--逻辑运算符(布尔运算符)
&& 与 两个操作数同时为true 结果为true 否则都是false
|| 或 两个操作数有一个为true 结果为true 否则为false
! 非 取反
隐式转换规律
1.逻辑非(!)操作符 首先会通过Boolean()函数将其转换为布尔值 然后求反
2.逻辑与(&&)操作符 如果第一个值经过Boolean()函数转换后为true 则返回第二个操作值 否则返回第一个操作值 例如 true && 'hello' 会返回 'hello'
3.逻辑或(||)操作符 如果第一个值经过Boolean()函数转换后为false 则返回第二个操作值 否则返回第一个操作值
--相等操作符==和===的隐式转换规律
1.布尔值、字符串和数值进行比较 会先将其转换为数值再进行比较
2.null和undefined比较是相等的 但不是全等的
3.NaN与任何值都不相等 都会返回false
--交互与写入
alert() | prompt() | confirm() | document.write()
----控制流程
3种基本结构:顺序结构 分支结构 循环结构
--分支结构
if...else 条件判断
三元运算符 表达式1 ? 表达式2 : 表达式3
switch语句 switch(expression) { case 常量1: 语句; brea;......default: 语句; break; }
--循环结构
while(循环条件){ 循环体 }
do { 循环体 } while(循环条件) 不管条件是否成立 都会执行一次
for(初始化表达式1; 判断表达式2; 自增or自减表达式3)
--continue和break
continue 立即跳出当前循环 继续下一下循环
break 立即跳出整个循环 即循环结束 开始执行循环后面的内容