一元运算符?
i++和++i 独立运算时,运算的结果时完全相同的。但是如果将i++或者++i赋值/打印/获取时,那么运算的先后顺序和赋值先后顺序将产生改变。
如果i++,变量在前,先赋值,再运算
如果++i,变量在后,先运算,再赋值
进制?
2进制、8进制、16进制。计算机只能认识二进制,布尔值true和false也算。
0001 1100 1010 1ca 二进制与十六进制互相转换是通过8421快速进行的
位非 ~
位非~ 是指+1取负。 如~2,转换过来就是-3。顺便提一下布尔值为false是当数值为0时,其他正数或负数都是true。
位与运算 &
5&6 结果为4 即5转换为二进制101,6转换为二进制110,然后101与110进行相对应的运算,1为true,0为false,结果就是100,100再转换为十六进制就是4.
位或运算 |
5 | 6结果是7 即5转换为二进制101,6转换为二进制110,然后101与110进行相对应的运算,1为true,0为false,或 | 是只要一个为true就是true,那么结果就是111,111再转换为十六进制就是7.
异或运算 ^
5^6结果是 3 即5转换为二进制101,6转换为二进制110,然后101与110进行相对应的运算,相同为0,不相同为1,那么结果就是011,011再转换为十六进制就是3. 运用场景一:
密码^加密串====加密后的密码 x^y=z x密码为1235,y加密串为36,z为加密 后的密码
加密后的密码^加密串===密码 z^y=x 如此便得到原始密码
左右移位 << >>
8<<2结果是32。 8为1000 左移两位即加两个0 就是1000 00整合一下就是10 0000二进制,二进制转换位十进制就是32
8>>2结果是2。 8为1000 右移两位即去掉两个0 就是10,该二进制转换位十进制就是2. 1<<n //求2的n次幂
==和=== 结果返回true或false
== 自带隐式转化,即会把左右两边转换为同一类型,再进行比较
=== 表示判断两者之间值和类型是否相同
注意: null==undefined 0==false==”” NaN与任何内容都不同,NaN也不等于NaN isNaN( )判断某个数值是否是非数值
牢记:
if( x==false){ } //为true的情况有三种,即x为空字符串”” , 0 ,false
if(x===false){ } //为true的情况有一种,即x为false
if( !x ){ } //为true的情况有六种,即x为0 , false , undefined , null , “” , NaN
!x先判断x的布尔值,再判断非!的布尔值
三元运算符?
条件?值1:值2,如果条件为true,返回值1,如果条件返回false,返回值2
sum>500 ? 500 : 400;
s = s || 50; //判断s是否存在,是的话返回s,不存在的话返回50,若s=””,空字符串是false,即s=flase为假,则此处返回50.相当于s=s? s : 50; 常用来判断s是否存在,存在则返回存在的值,不存在则返回后面的值。这方法也叫熔断处理,即一个条件满足,则根本不会去判断第二个条件
obj=obj || {}; //相当于obj = obj ? obj : { }; 即判断obj是否是真,如果不是真,则返回一个空对象 { }