10.1 算术运算符 “+” 功能 对数字进行代数求和; 对字符串进行连接操作; “-” 功能 对数字进行减法操作; 对操作数进行“取反”操作; “*” 功能 对数字进行乘法操作; 符号问题 同号得正,异号得负; “/” 功能 对数字进行除法操作; 符号问题 同号得正,异号得负; “%” 功能 返回两个除数的余数; 符号问题 和第一个运算数的符号相同; 10.2 自增与自减 功能相反 ++ 对唯一的运算数进行递增操作(每次加1); -- 对唯一的运算数进行递减操作(每次减1); 规则相同 运算数必须是一个变量、数组的一个元素或者对象的属性; 如果运算数是非数值的则运算符会将它转成数值; 符号位置决定运算结果 运算数 之前:先进行递增(递减)操作,再进行求值; 运算数之后:先进行求值,再进行递增(递减)操作; 10.3 关系运算符 大小关系检测 运算符 < 如果A小于B,则返回值为ture,否则返回值为false; <= 如果A小于等于B,则返回值为ture,否则返回值为false; > 如果A大于B,则返回值为ture,否则返回值为false; >= 如果A大于等于B,则返回值为ture,否则返回值为false; 操作规则 数值与数值的比较:比较它们的代数值; 仅一个运算数是数值:将另一个运算数转换成数值,并比较它们的代数值; 字符串间的比较:逐字符比较它们的Unicode数值; 运算数非数字也非字符串:转换为数值或字符串后进行比较; 运算数无法被转换成数值或字符串:返回值为false; 与NaN的比较:返回值为false; 等值关系检测 相等比较 操作符 “==” 比较两个运算数的返回值看是否相等; “!=” 比较两个运算数的返回值看是否相等; 类型转换 布尔值:true为1,false为0; 对象:调用valueOf(),返回原始值; 字符串与数值的比较,字符串转换为数值; 比较原则 null与undefined:相等,比较前不进行任何转换; NaN:与任何数值都不相等,包括其自身; 对象:是否属于同一对象,如是则相等,如为否则不相等; 相同原则 运算符 === 比较两个运算数的返回值及数据类型看是否相同; !== 比较两个运算数的返回值及数据类型看是否不同; 比较原则 值类型间比较:只有数据类型相同,且数值相等时才能够相同; 值类型与引用类型比较:肯定不相同; 引用类型间比较:比较它们的引用值(内存地址); 10.4 对象运算符 in 判断左侧运算数是否为右侧运算数的成员; instanceof 判断对象实例是否属于某个类或构造函数; new 根据构造函数创建一个新的对象,并初始化该对象; delete 删除指定对象的属性,数组元素或变量; .及[] 存取对象和数组元素; () 函数调用,改变运算运算符优先级等; 10.5 逻辑运算符 !逻辑非 返回值:true, false; 特性:如果运算数的值为false则返回true,否则返回false; 连续使用两次!,可将任意类型转为布尔型值; &&逻辑与 规则: 第一个操作数是对象,返回第二个操作数; 第二个操作数是对象,第一个操作数值为true时返回该对象; 两个操作数都是对象,返回第二个操作数; 一个操作数是null,返回null; 一个操作数是NaN,返回NaN; 一个操作数是undefined,返回undefined; 特性: 当且仅当两个运算数的值都是true时,才返回true,否则返回false; 短路操作,当第一个操作数的值是false则不再对第二个操作数进行求值; ||逻辑或 规则: 第一个操作数是对象,则返回第一个操作数; 第一个操作数值是false,则返回第二个操作数; 两个操作数都是对象,返回第一个操作数; 两个操作数是null,返回null; 两个操作数是NaN,返回NaN; 两个操作数都是undefined,返回undefined; 特性: 当且仅当两个运算数的值都是false时,才返回false,否则返回true; 如果第一个操作数值为true,则不会对第二个操作数进行求值; 10.6 位运算符 基础知识 类型: 有符号,无符号; 数值范围:-2147483648~2147483647; 存储方式: 正数, 纯2进制存储; 31位中每一位表示2幂; 用0补充无用位; 负数, 2进制补码存储; 当做0来处理的特殊值, NaN; Infinity; 逻辑位运算 返回值为1的情况: 0按位非~; 对应位全为1按位与&; 任何一位是1按位或|; 既不同时为0,也不同时为1,按位异或^; 返回值为0的情况: 1按位非~; 对应位全为0按位与&; 任何一位是0按位或|; 既同时全为0,或同时全为1,按位异或^; 位移操作 左移<<: 将数值的所有位左移指定的位数; 所有空位用0补充; 左移1位对其乘2,左移2位对其乘4,以此类推; 有符号右移<<: 将数值的所有位右移指定的位数; 移出的位被舍弃; 保留符号位; 右移1位对其除2,右移2位对其除4,以此类推; 无符号右移<<: 正数,与有符号右移结果相同; 负数,会出现无限大的数值; 复合赋值运算符 位操作符与等号结合,复合赋值不会有性能方面的提升; 10.7 其它运算符 ?: 条件运算符,简洁的if else; typeof 类型判定运算符; , 逗号,在一行语句中执行多个不同的操作; void 舍弃运算数的值,返回undefined作为表达式的值; 10.8 示例代码 <html> <body> <script type="text/javascript"> x=5+5; document.write(x); document.write("<br />"); x="5"+"5"; document.write(x); document.write("<br />"); x=5+"5"; document.write(x); document.write("<br />"); x="5"+5; document.write(x); document.write("<br />"); </script> <h3>规则是:</h3> <p><strong>如果把数字与字符串相加,结果将成为字符串。</strong></p> </body> </html> 查看结果: 10 55 55 55 规则是: 如果把数字与字符串相加,结果将成为字符串。 |
|