严格模式 为js定义了一种不同的解析与执行模型,对一些不确定的行为进行处理,对一些不安全的操作也会抛出错误。
使用严格模式,加入"use strict"
省略var操作符创建的变量就成了全局变量。
typeof null 返回 object
在使用var声明变量但未对其加以初始化时,这个变量的值就是undefined。
null值表示一个空对象指针。如果定义的变量准备在将来用于保存对象,那么应该将其初始化为null。
NaN(not a number)是一个特殊的数值,用来表示一个本来要返回数值的操作数未返回数值的情况。任何涉及NaN的操作都会返回NaN,其次,它与任何值都不想等,包括他自身。
三个转换数值的函数。
- Number() 适用于任何数据类型
- parseInt() 字符串转换为整型
- parseFloat() 字符串转换为浮点型
Number()
- true 1 false 0
- null 0
- undefined nan
- 字符串 空串 0 无法转换的字符串 nan
parseInt()
- 忽略字符串前面的空格,直到找到第一个非空格字符,如果找到的不是数字或负号,返回NaN
- 0x 16进制
- parseInt可接受第二个转换时的基数作为参数,如16表示16进制。
parseFloat()
- 字符串的第一个小数点有效,第二个以后就无效了
- 16进制的字符串被转换成0
- 如果解析的是整数,则会返回整数。
String
String() 如果值有toString方法,则调用该方法并返回相应结果。如果是null,返回“null”,如果是undefined,返回“undefined”。
Object类型
Object类型是所有它的实例的基础。它的属性和方法也同样存在与更具体的对象中。
操作符
逻辑与和非属于短路操作,第一个能确定结果,不会求第二个值。
加法操作符 如果有一个操作数是对象,数值或布尔值,则会调用toString方法取得相应的字符串值。减法操作符会调用Number方法。
两组操作符 相等和不相等--先转换再比较 全等和不全等-- 仅比较
语句
switch语句在比较时使用的是全等操作符
函数不介意传递进来多少个参数,也不在意传进来的数据类型,因为内部是用一个数组来表示的,所以js不能实现函数重载。