1.JavaScript的特点
- 动态+弱类型
- 解释型或实时编译型语言
- 面向 对象
- 函数式特征
- 灵活和可扩展性
- 反射与元编程
- 高性能
- 单线程异步非阻塞
2.JavaScript主要能做的事情
- (通过DOM)改变网页文档元素和属性
- (通过BOM)操作浏览器API
- (事件机制)响应用户行为
- (XHR.Fetch.WS)发送和接收数据
- (File API)操作文件
3.JavaScript类型的说明:
- 动态类型+弱类型
- JS的变量、属性在运行期决定类型
- 存在隐式类型转换
- 有一系列识别类型的反射方法
4.JavaScript语言类型
- typeof undefined === ‘undefined’
- typeof true === ‘boolean’
- typeof 123 === ‘number’
- typeof ‘username’ === ‘string’
- typeof {name:’sgm’} === ‘object’
- typeof symbol === ‘symbol’
- typeof null === ‘object’
- typeof function(){} === ‘function’
5.变量声明
- var 声明一个变量,可选择将其初始化为一个值
不支持块级作用域,存在变量提升 - let 声明一个块级作用域变量,可选择其初始化为一个值
块级作用域,同一作用域中不允许重复声明,暂存死区(变量不会被提升,typeof也不是安全的),循环中的let作用域 - const 声明一个只读的常量
const声明的标识符所绑定的值不可以再次改变,但是所绑定值得内容可以改变
6.变量不声明直接引用
- 严格模式
- 非严格模式
7.严格相等与非严格中的相等
- null == undefined,null !== undefined
- 非严格相等的类型转换(’1’ == 1 , [] == 0, 0 == false, 1 == true都为true)
- NAN与任何值(包括自身)都不相等
8.boolean类型
- 值为true和false
- 0、‘’、null、undefined被隐式转换为false,其他为true
- 可以通过!!将非boolean值转换为boolean
- 布尔操作符 && 和 || 并不会转换类型
- 比较操作符总是返回boolean类型
- && 和 || 都有短路特性(第一个操作数能决定结果,那么就不会再对第二个操作数求值)
1 || console.log(“sgm”); 第一个操作数为真,则表达式的结果为真,则不会执行后面的输出
0 && console.log(“sgm”); 第一个操作数为false,表达式结果为false,则不会输出结果
0 || console.log(“sgm”); 1 && console.log(“sgm”); 两者都输出结果
9.Number类型
- 数值范围:-2^53 - 2^53
- Number.MIN_SAFE_INTEGER,可精确表示的整数范围下限。-Math.pow(2, 53)+1,即是-9007199254740991
-Number.MAX_SAFE_INTEGER,可精确表示的整数范围上限。Math.pow(2, 53)-1,即是9007199254740991。
-Infinity(超过最大数,无穷大),用isFinite()来判断
-Number.MAX_VALUE(1.7976931348623157 x 10^308)
-Number.MIN_VALUE(表示的最小的数(接近 0 ,但不是负数)。它的近似值为 5 x 10-324。)
-Number.EPSILON,极小值(2.220446049250313e-16),作为允许的误差范围使用。可用作判断小数精度。(当某运算结果的误差小于Number.EPSILON则认为该结果是可被接受的) - 浮点数精度
-value.toPrecision(n); 数字一共保留n位
value.toFixed(n) 小数点后面保留n位 - 数值转换
-parseInt()在ES5严格模式下,不具有解析八进制的能力,这种情况下可以为parseInt()提供第二个参数 var num=parseInt(“AF”,16)
parseInt()解析空字符串null会返回NaN
-parseFloat()只解析十进制的值,十六进制格式的字符串始终被转换为0
-Number()函数的转换规则:
1.如果是boolean值,true和false分别被转换为1和0
2.如果是null,返回0. var num1=Number(“”); //0
3.如果是undefined,返回NaN - 0和-0