0. 严格模式

"user strict"

(1整个脚本顶部,2函数体顶部)


1. 数据类型

undefined -- 未定义

boolean

string

number

object -- 对象 或 null

function

0) typeof操作符(不是函数)

alert(val) //error

typeof val //返回"undefined"

val定义局部变量(函数体内),全局变量(不再任何函数体内)

直接写变量名定义全局变量

1) Undefined

所有未初始化的变量均为Undefined类型,值为undefined

undefined 派生自 null, null == undefined // true

typeof null; // "object"

2) Boolean

可以通过Boolean()函数将所有其它值转换为Boolean类型

转换为false的值有:"", 0和NaN, null, undefined

在控制流if()中科自动执行相应的Boolean转换

3) Number

十进制

八进制(0开头+(0-7),超过7则忽略开头的0,当做十进制)

十六进制(0x开头+(0-9及A-F/a-f))

浮点数(var num = 10.1; var num = 10.1e7), 注意浮点数是有误差的,比较式不要直接==

范围: Number.MAX_VALUE Number.MIN_VALUE, 超出范围为 -Infinity/Infinity(正/负无穷), isFinite()判断是否未超出范围

NaN (Not a Number)

将非数字字符串转换为Number返回NaN), 0除以0返回NaN, 正数/0返回Infinity, 任何NaN参与的算术运算值都为NaN

NaN不等于任何值(包括自己)

isNaN()

Number() --- Number("adf")NaN, Number(0011)11, Number(true)1

parseInt() --- parseInt("1234as")1234, parseInt("0xf")15

parseFloat() --- parseFloat(12.21.5)12.21, parseFloat(3.1e1)==31

4) string

"a" + "b" === "ab"

Number.toString()

String()

String(true) === "true"

String(null) === "null"

val test; String(test) === "undefined"

5) Object

和Java的Object类似


2. 操作符

  • 单目运算符: ++ -- + - (即正负号)
  • 位运算符: ~ & | ^ << >>(有符号右移,符号位不动) >>>
  • 逻辑运算符: ! && ||
  • 算术运算符: * / % + -
  • 关系操作符: < > <= >= != == ===(全等,比较时不会做类型转换)
  • 条件操作符: ? :
  • 赋值操作符: = *= /= %= += -= <<= >>= >>>=
  • 逗号操作符: , (返回值会最后一项,如:val a = 10, 9, 0; // a == 0)

3. 语句