JavaScript
基本语法
1. 严格区分大小写
typeof !=TypeOf
2. 标识符
以字母、_ 、$ 开始,剩下的其他字符可以是字母、_ 、$及数字,推荐使用驼峰命名。
3. 注释
单行//
多行/* */
4. 变量
var
可多次定义同一变量,声明提升(hoist),在严格模式下,不能定义eval与argument变量。范围:函数作用域
let
注意:不可再同一作用域冗余声明;不可在同一作用域与var声明同一变量名;在作用域内不会被提升(暂时性死区);全局声明不会成为window对象的属性(var会),生命周期在页面生命周期内;let在循环体中的作用和不能依赖条件声明模式。范围:块作用域
const
注意:与let行为基本相同,但是为常量,声明时必须初始化,无法更改且无法重复声明;如果const指向一个对象,那么对对象某些属性的值进行修改是符合规范的。
变量使用推荐
尽量不用var,let优先使用,const次之
5.数据类型
Undifined、Null、Boolean、Number、String、Symbol、Objet
Undifined
声明一个变量未赋值时,会被赋值为undifined,对未声明变量使用typeof操作符也会是undifined。
Null
常将用于保存对象的变量赋值为null,typeof null=object。
Boolean
true or false ,可用Boolean函数将其他数据类型转为Boolean类型。
Number
八进制(0、0o开头)、十进制、十六进制(0x开头)、浮点数(浮点数精度可达17位小数,但在算术计算中远不如整数,不要测试某个固定的浮点值)、正无穷(Infinity)、负无穷(-Infinity)、NaN(not a number)、数值转换(Number()、parseInt()、parseFloat())
String
字符字面量(/n /t /b /r …)转义序列表示一个字符、toString()方法(null、undifined无此方法)、模板字面量(ES6 保留换行字符)、字符穿插值(${})、模板字面量标签函数、原始字符串(String.raw)
Symbol
ES6新增数据类型、Symbol.for()、Symbol.keyFor()、Symbol()、全局符号注册表、使用符号作为属性、常用内置符号(Symbol.hasInstance、Symbol.isConcatSpreadable、Symbol.iterator、Symbol.match、Symbol.replace…)
Object
每个Object对象有以下属性和方法:constructor、hasOwnProperty、hasPropertypeof、propertyIsEnumerable、toLocaleString、toString、valueOf
6. 操作符
一元操作符
++、–、 +、-
位操作符
按位非(~)、按位与(&)、按位或(|)、按位异或(^)、左移(<<)、有符号右移动(>>)、无符号右移(>>>)
布尔操作符
!、&&、||、
乘性操作符
*、/、%
其他操作符
**、<、>、<=、>=、!=、== 、===、*=、+=、/=、%=、+=、-=、<<=、>>=、>>>=
条件操作符
let max=(num1>num2)?num1:num2;
7. 语句
if(condition) statement1 else statement2;
do(){statement}while(expression);
while(expression)statement;
for(initialization;expression;post-loop-expression)statement;
for(property in expression)statement;
for(property of expression)statement;
label:statement;
with(expression)statement;
break,continue;
switch(expression){
case value1:
statement1;
break;
case value2:
statement2;
break;
default:
statement
};
7. 函数
function functionName(arg1,agr2,...,argN){
statement;
}~~eval~~ ,~~arguments~~ ;