【JS精粹】C2 -- 语法

204 阅读3分钟

现今大部分编程语言中都要求强类型。其原理在于强类型允许编译器在编译时检测错误。

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'

结合性:加法运算符的结合性是从左向右,而一元运算符、赋值运算符及三元条件运算符的结合性是从右向左。

%是求余运算,不是通常数学意义上的模运算。

/运算符可能会产生一个非整数结果,即使两个运算符都是整数。

函数调用引发函数的执行。函数调用运算符是跟随在函数名后面的一对圆括号。

字面量

对象字面量是一种可以方便的按照指定规格创建新对象的表示法。