JavaScript高级程序设计-基本概念
语法
1, 借鉴C语言Java 和Perl的语法
2,区分大小写
3, 标识符:指变量、函数、属性的名字。或者函数的参数。
- 第一个字符必须是一个字母、下划线_ 或者一个美元$
- 其他字符可以是字母下划线美元符号或数字
- 采用驼峰大小写格式 :myCar , firstName
4,注释 : 使用C风格注释,包括单行注释和块级注释
// 单行注释
/ **
* 这是一个多行
*/
5,严格模式
EXMAScript 5 引入了严格模式的概念,是定义了一种不同的解析与执行模型。
在严格模式下,ECMAScript 3中的一些不确定行为将得到 处理。而且对某些不安全的操作也会抛出错误:启用严格模式,顶部添加
“use script” 一个编译指示,为了不破坏ES3语法特意选定的语法
函数中启用严格模式:
function a() {
"use script"
}
支持严格模式的浏览器:IE10+,Firefox+、Safari5.1+、Opera12+、Chrome
6,语句
语句由一个分毫结尾,建议在任何时候都不要省略它:
代码行结尾没有分号会导致压缩错误;增进代码性能,解析器不必花时间推测应该在哪里插入分号了
变量
ECMAScript 的变量是松散类型的,可以保存任何类型的数据:var 操作符定义的变量将称为定义该变量的作用域中的局部变量
数据类型: 基本类型-String Number Boolean Symbol Undefined Null
引用类型:Object, Function Array RegExp Date 。。。
typeof操作符
typeof操作符可能返回下列某哥字符串:
“undefined”,"boolean","string",“number”,“object”,“function”
- 对于基本类型,除null以外,均可以返回正确的结果
- 对于引用类型,除function以外,一律返回object类型
- 对于null,返回object类型
instanceof 只能用来判断两个对象是否属于示例关系,而不能判断一个对象示例具体哪种类型
toString():是Object 的原型方法,对于Object对象直接调用toString就返回【object Object】,对于其他对象,则需要通过call/apply来调用才能正确的返回类型信息
[object Number] ,[object Boolean] ,[object Symbol] ,[object Undefined] ,[object Null] ,[object Function] ,
[object Date] , [object Array] ,[object RegExp] ,[object Error] ,[object HTMLDocument] ,[object global]
Null 类型: 如果定义的变量准备在将来用于保存对象,那么最好将该变量初始化为null,这样只要直接检查null值即可。
Number类型(IEEE格式): 八进制表示 010 ,如字面值大于0-7 则表示十进制, 十六进制:0x ,后面跟0-9,A-F大小写均可
八进制和十六进制在计算的时候都会被转为十进制
- 浮点 不要测试某个特定的浮点值,最高精确小数点后17位
- 数值范围: 最小数值保存在Number.MIN_VALUE (5e-324), 最大值保存在Number.MAX_VALUE
- 超出范围表示 正负无穷 判断数值是不是有穷的 可以使用isFinite()
NaN : 即非数值,表示一个本来要返回数值的操作数未返回数值的情况。 任何涉及NaN的操作都会返回NaN,NaN与任何值都不相等
isNaN() 函数:任何不能被转换为数值的值都会导致这个函数返回true;
数值转换:
Number():可以用于任何类型
parseInt(),parseFloat(): 专门用于将字符串转换成数值 : 如果第一个字符不是数字字符或者负号返回NaN
String类型:
String类型包含一些特殊的字符字面量,也叫转义序列
字符串的特点:ECMAScript中的字符串是不可变的。
转换为字符串:使用toString()方法 ,null 和 undefined 没有此方法, 在不明确转换数值类型时可以是使用String()转换。
数值转换字符串可以在toString(2)传入参数,表示转换后的进制数。
Object 类型:每个实例都有一下属性和方法
constrctor: 保存这用于构建当前对象的函数;
hasOwnProperty(propertyName):用于检查给定的属性在当前对象实例汇总是否存在
isPrototypeof(object):检查对象是不是当前对象的原型
propertyIsEnmuerable::用于检查给定的属性是否能否使用for-in语句来枚举
valueof: 返回对象的字符串/数值/或布尔值表示。
操作符
valueof: 返回对象的字符串/数值/或布尔值表示。
一元操作符 (++,--)
在应用于一个包含有效数字字符的字符串时,先将其转换为数值
在应用于一个不包含有效数字字符的字符串时,将变量的值设置为NaN ,字符串变量变成数字变量
在应用于布尔值flase时,先将其转换为0再执行加减1的操作,布尔值变量变成数值变量
在应用于布尔值true时,先将其转换为1再执行加减1的操作
在应用于浮点数值时,执行加减1的操作
在应用于对象时,先调用对象的valueof()方法,以取得一个可供操作的值,如果结果时NaN,则在调用toString()方法,对象变量变成数值变量。
位操作符
按内存中表示数值的位来操作数值 (不直接操作64位的值,先转换为32位,最后再转换会64位)
32位前31位表示整数值,第32位表示数值负号,0表示正数,1表示负数 符号位
二进制码存储:
附属使用的格式是二进制补码:
1 求这个数值绝对值的二进制码
2 求二进制反码,即将0替换为1,1替换为0
3 得到的二进制反码加1
1. 按位非:执行按位非的结果就是返回数值的反码,本质是操作数的负数减1,按位非速度会更快;
2. 按位与:由一个和号字符(&)表示,只在两个数值的对应位都是1时,才返回1,任何一位是0,结果都是0;
3. 按位或:由一个竖线符号(|),在有一个位是1的情况下返回1,只有在两个位都是0的情况下才返回0;

浙公网安备 33010602011771号