脚本宝典收集整理的这篇文章主要介绍了JavaScript学习笔记(四),脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
前缀递增和递减
let a = @H_286_126@1, b = 2;
let c = ++a; // c = 2
let d = --b; // b = 1
后缀递增和递减
let a = 1;
let c = a--; // c = 1;
let d = a; // d = 0;
前后缀的主要区别F1a; 后缀递增和递减在语句求值后才发生。
这四个操作符均可用于任何值,即可以用字符串,布尔值和对象等。
一元加和减如果用在普通的数值运算上与数学用法没有区别。 如果将一元加和减应用到非数值,则会执行与使用 Number() 转型函数一样的类型转换: 布尔值 false 和true转换为0和1 字符串根据特殊规则进行解析 对象会调用它们的valueOf() 和 / 或 toString() 方法以得到可以转换的值
位操作符用于数值的底层操作,也就是操作内存中表示数据的比特(位)
按位非操作符用波浪符(~)表示,它的作用是返回数值的补数(即对数值取反并减一,不过位操作符运算速度更快)。
let num1 = 25; // 二进制 00000000000000000000000000011001
let num2 = ~num1; // 二进制 11111111111111111111111111100110
console.LOG(num2); // -26
按位与操作符用和号(&)表示,有两个操作数。本质上,按位与就是将两个数的每一个位对齐, 然后基于真值表中的规则,对每一位执行相应的与操作(1 & 1 = 1,其他均为 0)。
let result = 25 & 3;
// 25 = 0000 0000 0000 0000 0000 0000 0001 1000
// 3 = 0000 0000 0000 0000 0000 0000 0000 0011
// = 0000 0000 0000 0000 0000 0000 0000 0001
console.log(result); // 1
按位或操作符用管道符(|)表示,有两个操作符,遵循基于真值表中的规则,每一位执行操作(0 | 0 = 0,其他均为 1)。
let result = 25 | 3;
// 25 = 0000 0000 0000 0000 0000 0000 0001 1001
// 3 = 0000 0000 0000 0000 0000 0000 0000 0011
// = 0000 0000 0000 0000 0000 0000 0001 1011
console.log(result); // 27
按位异或用脱字符(^)表示,有两个操作符,遵循基于真值表中的规则,每一位执行操作(当两个相同的时候返回 0 ,其他返回 1)。
let result = 25 ^ 3;
// 25 = 0000 0000 0000 0000 0000 0000 0001 1001
// 3 = 0000 0000 0000 0000 0000 0000 0000 0011
// = 0000 0000 0000 0000 0000 0000 0001 1010
console.log(result); // 26
左移操作符用两个小于号(<<)表示,会按照指定的位数将数值的所有位向左移动(左移会以 0 填充这些空位,会保留它所操作数的符号)。
let oldValue = 2; // 等于二进制 10
let newValue = oldValue << 5; // 等于二进制 1000000,即十进制 64
有符号右移由两个大于号(>>)表示,会将数值的所有 32位都向右移,同时保留符号(正或负)。 有符号右移实际上是左移的逆运算。 (右移后空位会出现在左侧,且在符号位之后。 ecmascript会用符号位的值来填充这些空位,以得到完整的数值)
let oldValue = 64; // 等于二进制 1000000
let newValue = oldValue >> 5; // 等于二进制 10,即十进制 2
无符号右移用 3个大于号表示(>>>),会将数值的所有 32位都向右移。 对于正数,无符号右移与有符号右移结果相同。 对于负数,与有符号右移不同,无符号右移会给空位补 0,而不管符号位是 什么。
let oldValue1 = 64; // 等于二进制 1000000
let newValue1 = oldValue1 >>> 5; // 等于二进制 10,即十进制 2
let oldValue2 = -64; // 等于二进制 11111111111111111111111111000000
let newValue2 = oldValue2 >>> 5; // 等于二进制00000111111111111111111111111110, 等于十进制 134217726
布尔操作符一共有 3个:逻辑非、逻辑与和逻辑或。 (均可以用于任何类型的操作数)
逻辑非操作符由一个叹号(!)表示。 这个操作符始终返回布尔值,无论应用到的是什么数据类型。逻辑非操作符首先将操作数转换为布尔值,然后再对其取反。 遵循如下规则:
逻辑非操作符也可以用于把任意值转换为布尔值。 同时使用两个叹号(!!),相当于调用了转型函数 Boolean()。
逻辑与操作符由两个和号(&&)表示,应用到两个值,遵循真值表规则(两个都为 true 的时候返回 true,其他时候返回 false) 遵循如下规则:
逻辑或操作符由两个管道符(||)表示,遵循真值表规则(两个都为 false 的时候返回 false,其他时候返回 true)。 遵循如下规则:
乘法操作符由一个星号(*)表示,可以用于计算两个数值的乘积。
乘法操作符在处理特殊值时也有一些特殊的行为:
除法操作符由一个斜杠(/)表示,用于计算第一个操作数除以第二个操作数的商。
除法操作符针对特殊值也有一些特殊的行为:
取模(余数)操作符由一个百分比符号(%)表示。
取模操作符对特殊值也有一些特殊的行为:
ECMAScript 7新增了指数操作符,;math.pow()现在有了自己的操作符**,结果是一样的。
console.log(Math.pow(3, 2); // 9
console.log(3 ** 2); // 9
console.log(Math.pow(16, 0.5); // 4
console.log(16** 0.5); // 4
指数操作符也有自己的指数赋值操作符**=。
let squared = 3;
squared **= 2;
console.log(squared); // 9
加性操作符有两个,加法和减法操作符。
对于普通数值就是求和,对于其他的也有着特殊的规则。
如果两个操作数都是数值,加法操作符执行加法运算并根据如下规则返回结果:
如果有一个操作数是字符串,则要应用如下规则:
如果有任一操作数是对象、数值或布尔值,则调用它们的 toString() 方法以获取字符串,然后再应用前面的关于字符串的规则。 对于 undefined 和 null,则调用 String() 函数,分别获取 “undefined” 和 “null”
对于普通的数值就是求差,也有着一些特殊的规则。
关系操作符执行比较两个值的操作,包括小于(<)、大于(>)、小于等于(<=)和大于等于(>=) 这几个操作符都返回布尔值。
用到不同数据类型时也会发生类型转换和其他行为:
提供了两组操作符: 第一组是等于和不等于,它们在比较之前执行转换。 第二组是全等和不全等,在比较之前不执行转换。
等于操作符用两个等于号(==)表示,如果操作数相等,则会返回 true。 不等于 操作符用叹号和等于号(!=)表示,如果两个操作数不相等,则会返回 true。这两个操作符都会先进行类型转换(通常称为强制类型转换)再确定操作数是否相等。
在转换操作数的类型时,相等和不相等操作符遵循如下规则:
在进行比较时,这两个操作符会遵循如下规则:
全等和不全等操作符与相等和不相等操作符类似,只不过它们在比较相等时不转换操作数。
let result1 = ("55" == 55); // true,转换后相等
let result2 = ("55" === 55); // false,不相等,因为数据类型不同
条件操作符由 = ?: 组成,用法如下:
let num1 = 5, num2 = 6;
let max = (num1 > num2) ? num1 : num2;
/*
相当于
let max;
if (num1 > num2) {
max = num1;
}
else {
max = num2;
}
*/
console.log(max); // 6
这些操作符仅仅是简写语法,使用它们不会提升性能。
let num1 = 1, num2 = 2, num3 = 3;
let num = (5, 1, 4, 8, 0); // num 的值为 0
在这里数字小的优先级高
操作符 | 顺序 | 优先级 |
---|---|---|
小括号 | () | 1 |
一元 | ! ++ -- | 2 |
算数 | 先* / % 后 + - | 3 |
关系 | > >= < <= | 4 |
相等 | == != === !== | 5 |
位 | & ^ | | 6 |
逻辑 | 先&& 后|| | 7 |
赋值 | = | 8 |
逗号 | , | 9 |
以上是脚本宝典为你收集整理的JavaScript学习笔记(四)全部内容,希望文章能够帮你解决JavaScript学习笔记(四)所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。