1.严格模式
ES5 引入,对某些不安全(ES3)的操作会抛出错误,
关键字"use strict"
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2.语句后加分号;
可增加性能,解析器不必花时间推测应该在哪里插入分号
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
3.变量
ES变量是松散类型,可以保存任意类型数据,未经初始化的变量会保存一个特殊的值 undfined
var 函数内有效,let 代码段有效 (挖个坑,这个要和TS的let的详细对比)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
4.数据类型
1.Undefined (未经初始化的值,存在意义,区分空对象指针与未经初始化的变量)
2.Null (空对象指针)
3.Boolean (true未任何非零值,非空字符串,任何对象,false未0和NaN 空字符串、null、undefined)
4.Number (整数和浮点数),
整数:(0****为八进制【序列数字超出7,会转为10进制】 0x*****为16进制)(八进制在严格模式下无效)(+0 == -0 因崔斯听)
浮点数:(会自动转换为整数如1.0 ,可用e表示法表示大数或者小数),JS的浮点数依旧是IEEE754,所以不可用==判断
NaN,非数值 Not a Number
数值转换:
Number()、parseInt(“10”,2)(可用二进制 八进制 十六进制解析) 、parseFloat()
5.String
6.Object
可使用typeof操作符 返回值来判断是哪种类型,操作符是操作符不是函数,所以可以不用圆括号
typeof(null) 会返回object
typeof(未初始化的值)会返回undefined 正常情况下回报错
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
5.操作符
1.递增和递减 ++、-- 借鉴自C
骚操作,不仅仅适用于整数,还可适用于 字符串、布尔值、浮点数、对象
2.位操作符
负数,补码, 与C++相同
........................................................
6. label语句,有点像goto,之后单独对比一下
7. with语句,将代码作用域设置到同一个特定对象中。严格模式下,不允许使用with,同时大量使用with会导致性能下降(看js 高级程序设计的说明,好像是会查询,所以导致性能下降)
-----(这意味着在 with 语句的代码块内部,每个变量首先被认为是一个局部变量,而如果在局部环境中找不到该变量的定义,就会查询location 对象中是否有同名的属性。如果发现了同名属性, 则以 location 对象属性的值作为变量的值。)
8.function 参数
ES函数不介意传递进来多少个参数,不在乎类型,原因是参数在内部是一个数组来表示的,函数体内可以通过arguments对象来访问这个参数数组,从而获取传递给函数的每个参数。
ES特点,命名的参数只提供便利,但不是必须的
参数,没有传递值的命名参数将自动被赋予undefined值
9.ES 没有重载
第三章看完。
遗留问题
1.var 和 let 的详细对比 (去看软一峰)
2.label 和 goto 虽然都是不推荐使用的,但是想看看
3.with语句,为什么耗性能,我猜测的是否正确,需要了解一下。
感叹:怪不得之后出现了TS,如函数,不强制类型的话,项目工程大了之后,太难读了。
学到了什么:
1.加分号可提高性能
2.数据类型的详细了解
3.++、-- 的骚操作
4.function 参数的了解