现今大部分编程语言中都要求强类型。其原理在于强类型允许编译器在编译时检测错误。
JSLint,JavaScript解析器,分析问题并报告包含的缺点。
空白
空白可能表现为被格式化的字符或注释的形式,有时候用它来分隔字符序列,通常没有意义。
注释形式:
- /* */包围的注释块
- //开头的行注释
在JavaScript中,用作注释块的字符也可能出现在正则表达式字面量里,所以块注释对于被注释的代码块是不安全的。建议避免使用/**/注释,而用//注释代替他。
标识符
由一个字母开头,其后选择性的加上一个或多个字母、数字、下划线,不能使用保留字。
数字
JavaScript只有一个数字类型。他在内部被表示为64位的浮点数,和Java的double数字类型一样。,没有分离出整数类型,避免了短整型的溢出问题,避免了一大堆因数字类型导致的错误,1和1.0的值相同。
NAN是一个数值,表示一个不能产生正常结果的运算结果,不等于任何值,包括他自己。
字符串
\转义字符,转义 反斜线、引号和控制字符
\u约定用来指定数字字符编码。
语句
if 被当作假的值:
- false
- null
- undefined
- 空字符串 ‘ ’
- 数字0
- 数字NAN
for语句:
- 初始化从句
- 条件从句
- 增量从句
for in语句:枚举一个对象的所有属性名(或键名)
可以通过Object.hasOwnProperty来确定这个属性名是该对象的成员,还是来自于原型链。
return
未指定返回值,返回undefined
break
可以指定一个可选的标签,那退出的就是带该标签的语句。
表达式
- 字面量值
- 变量
- 内置的值(true、false、null、undefined、NAN和Infinity
- 以new开头的调用表达式
- 以delete开头的属性提取表达式
- 包在圆括号中的表达式
- 以一个前置运算符作为前导的表达式
- 或者表达式后面跟着:
- 一个中置运算符与另一个表达式
- 三元运算
- 一个函数调用
- 一个属性提取表达式
运算符优先级
| . [] () | 提取属性与调用函数 |
|---|---|
| delete new typeof + - ! | 一元运算符 |
| * / % | 乘法 除法 求余 |
| + - | 加法/连接 减法 |
| >= <= > < | 不等式运算符 |
| === !== | 等式运算符 |
| && | 逻辑与 |
| || | 逻辑或 |
| ?: | 三元 |
typeof运算符产生的值有'number'、'string'、’boolean‘、’undefined'、'function'和'object'
如果运算数是一个数组或则null,那么结果是'object'
结合性:加法运算符的结合性是从左向右,而一元运算符、赋值运算符及三元条件运算符的结合性是从右向左。
%是求余运算,不是通常数学意义上的模运算。
/运算符可能会产生一个非整数结果,即使两个运算符都是整数。
函数调用引发函数的执行。函数调用运算符是跟随在函数名后面的一对圆括号。
字面量
对象字面量是一种可以方便的按照指定规格创建新对象的表示法。