- 区分大小写
- 变量是弱类型
- 定义变量只用var,初始化为任意值
- 结尾分号可有可无
- 注释
- 单行注释: //
- 多行注释: / /
- 代码块
- { code }
- 变量
- 声明变量
- var test = ‘1’
- 定义多个变量:var a = 1, b= 2
- 定义多个类型:var a =1, b=’2’
- 不一定需要初始化:var a
- 变量可以存放不同类型的值: var a=’1’; a = 2
- 命名变量
- 第一个字符必须是字母,下划线(_),美元符号($)
- 余下字符可以是下划线,字母,数字,$
- 命名规则
- Camel标记法:首字母小写,后面字母以大写字符开头(var myTestValue=0)
- Pascal标记法: 首字母大写,后面字母以大写字符开头(var MyTestValue=0)
- 匈牙利标记法:pascal命名变量前加变量类型的小写字母(var MyTestValue=0)
- 变量声明不是必须的
- var a = 2; b = a + 1; alert(b)
- 声明变量
- 关键字
- break
- case
- catch
- continue
- default
- delete
- do
- else
- finally
- for
- function
- if
- in
- instanceof
- new
- return
- switch
- this
- throw
- try
- typeof
- var
- void
- while
- with
- 保留字
- abstract、boolean、byte、char、class、const、debugger、double、enum、export、extends、final、float、goto、implements、import、int、interface、long、native、package、private、protected、public、short、static、super、synchronized、throws、translent、volatile
- 原始值和引用值
- 原始值
- 存储在栈中的数据段
- 原始类型:Undefined、Null、Boolean、Number、String
- 引用值
- 存储在堆中的对象。
- 原始值
- 原始类型
- typeof运算符:检查变量或值的类型
- Undefined 类型
- 只有一个值undefined。未初始化的变量默认值为undefined
- 当函数无明确返回值时,返回的值也是undefined
- Null 类型
- 专用值null
- unll == underfined //结果为true,值undefined实际是从值null派生而来
- 现在null被认为是对象的占位符,从技术上它仍然是原始值。
- Boolean 类型
- true/false
- Number 类型
- 既可以表示32位整数,还可以表示64位的浮点数
- 整数
- 浮点数
- 浮点数在计算之前,真正存储的是字符串
- 小数计算的误差
- 十进制值最多有17位进制位,17位之后的值将被裁去,从而造成一些小的数学误差。
- 特殊的Number值
- Number.MAX_VALUE
- Number.MIN_VALUE
- Number.POSITIVE_INFINITY //当计算生成的数大于 Number.MAX_VALUE 时
- Number.NEGATIVE_INFINITY // 当计算生成的数值小于 Number.MIN_VALUE 时
- Number.POSITIVE_INFINITY //值为Infinity 无穷大
- Number.NEGATIVE_INFINITY // 值为-Infinity
- NaN
- 特殊值是 NaN,表示非数(Not a Number)
- alert(NaN == NaN); //输出 “false”
- String 类型
- 唯一没有固定大小的原始类型
- 字符串字面量是由双引号(”)或单引号(’)声明的
- 字符串中每个字符都有特定的位置,首字符从位置 0 开始,第二个字符在位置 1,依此类推。这意味着字符串中的最后一个字符的位置一定是字符串的长度减 1:
- 字符字面量
- \n 换行
- \t 制表符
- \b 空格
- \r 回车
- \f 换页符
- \ 反斜杠
- \’ 单引号
- \” 双引号
- \0nnn 八进制代码 nnn 表示的字符(n 是 0 到 7 中的一个八进制数字)
- \xnn 十六进制代码 nn 表示的字符(n 是 0 到 F 中的一个十六进制数字)
- \unnnn 十六进制代码 nnnn 表示的 Unicode 字符(n 是 0 到 F 中的一个十六进制数字)
- 类型转换
- 转换成字符串
- var a = ‘1’
- toSting()
- 将值转化为字符串
- Boolean、数字,字符串都有toSting()方法
- Number类型比较特殊
- 默认模式
- num.toString()
- 最终都输出十进制的形式字符串
- num.toString()
- 基模式
- num.toString(2): 输出二进制形式
- num.toString(8): 输出八进制形式
- num.toString(16): 输出十六进制形式
- 默认模式
- 转换成数字
- parseInt()
- 首先检查字符串0位置是否是数字,如果不是则返回NaN。
- 如果0位是有效数字,则依次检查,一直到非有效数字的字符位置,这时将之前的数字返回。
- parseInt(‘123abc’) 输出123
- 基模式
- parseInt(‘AF’,16),输出十六进制,返回175
- 适用二进制,八进制,十进制,十六进制
- 如果十进制数前面包含0,则会转化为八进制的值,所以最好使用基数10
- parseInt(‘010’) //返回8
- parseFloat()
- 类似parseInt
- parseInt()
- 强制类型转换
- Boolean(value) - 把给定的值转换成 Boolean 型;
- 返回false
- 空字符串、数字0、undefined、null
- 返回false
- Number(value) - 把给定的值转换成数字(可以是整数或浮点数);
- 用 Number() 进行强制类型转换,”1.2.3” 将返回 NaN,因为整个字符串值不能转换成数字
- 如果字符串值能被完整地转换,Number() 将判断是调用 parseInt() 方法还是 parseFloat() 方法。
- 不同的值调用Number()
- Number(false) 0
- Number(true) 1
- Number(undefined) NaN
- Number(null) 0
- Number(“1.2”) 1.2
- Number(“12”) 12
- Number(“1.2.3”) NaN
- Number(new object()) NaN
- Number(50) 50
- String(value) - 把给定的值转换成字符串;
- Boolean(value) - 把给定的值转换成 Boolean 型;
- 转换成字符串
- 引用类型
- 类(class)
- Object 对象
- 属性
- constructor
- 对创建对象的函数的引用(指针)。对于 Object 对象,该指针指向原始的 Object() 函数。
- Prototype
- 对该对象的对象原型的引用。对于所有的对象,它默认返回 Object 对象的一个实例。
- constructor
- 方法
- hasOwnProperty(property)
- 判断对象是否有某个特定的属性。必须用字符串指定该属性。(例如,o.hasOwnProperty(“name”))
- IsPrototypeOf(object)
- 判断该对象是否为另一个对象的原型。
- PropertyIsEnumerable
- 判断给定的属性是否可以用 for…in 语句进行枚举。
- ToString()
- 返回对象的原始字符串表示。对于 Object 对象,ECMA-262 没有定义这个值,所以不同的 ECMAScript 实现具有不同的值。
- ValueOf()
- 返回最适合该对象的原始值。对于许多对象,该方法返回的值都与 ToString() 的返回值相同。
- hasOwnProperty(property)
- 属性
- Boolean 对象
- Number 对象
- ValueOf()
- 要得到数字对象的 Number 原始值
- toFixed()
- 返回的是具有指定位数小数的数字的字符串表示
- toExponential()
- 返回的是用科学计数法表示的数字的字符串形式
- toPrecision()
- 返回数字的预定形式或指数形式
- .toPrecision(1)
- .toPrecision(2) // 两位数
- .toPrecision(3) // 三位数
- 返回数字的预定形式或指数形式
- ValueOf()
- String 对象
- length
- 字符串中的字符个数
- charAt()
- 返回的是包含指定位置处的字符的字符串
- charCodeAt()
- 返回字符代码
- concat()
- 用于把一个或多个字符串连接到 String 对象的原始值上
- indexOf()
- 返回的都是指定的子串在另一个字符串中的位置,如果没有找不到子串,则返回 -1。
- lastIndexOf()
- 返回的都是指定的子串在另一个字符串中的位置,如果没有找不到子串,则返回 -1。
- localeCompare()
- 对字符串进行排序
- 如果 String 对象按照字母顺序排在参数中的字符串之前,返回负数。
- 如果 String 对象等于参数中的字符串,返回 0
- 如果 String 对象按照字母顺序排在参数中的字符串之后,返回正数。
- 对字符串进行排序
- slice()
- 返回的是要处理的字符串的子串,都接受一个或两个参数。第一个参数是要获取的子串的起始位置,第二个参数是要获取子串终止前的位置。
- substring()
- 返回的是要处理的字符串的子串,都接受一个或两个参数。第一个参数是要获取的子串的起始位置,第二个参数是要获取子串终止前的位置。
- toLowerCase()、toLocaleLowerCase()、toUpperCase() 和 toLocaleUpperCase()
- 大小写转换
- length
- instanceof 运算符
- instanceof 运算符与 typeof 运算符相似,用于识别正在处理的对象的类型。
- 与 typeof 方法不同的是,instanceof 方法要求开发者明确地确认对象为某特定类型。