javascript操作

1. >> 按位右移运算符

result = expression1 >> expression2 

右移表达式的位,保持符号不变。

>> 运算符将 expression1 的位右移 expression2 中指定的位数。 用 expression1 的符号位(1负0正)填充右移后左边空出来的位。 右移的位被丢弃。 例如,计算完下列代码后,temp的值为 -4:因为 -14(即二进制的 11110010)右移两位后等于 -4(即二进制的 11111100)。
补码计算 正数的补码为本身2进制表示,负数的补码为2进制码逐位取反后加1(符号位不变)
14的2进制码为 0000 1110,按位取反为01110001 ,加1为 0111 0010,则-14 为 1111 0010,右移两位,用符号位(1),补全左边 则为 11111100,
11111100对应的10进制换算  先减1,为 11111011,按位取反  10000100,即为-4
var inputValue = '4';
//0000 0100 -> 0000 0001
console.log(inputValue >> 2);  //1

//1
var inputValue2 = -14;
console.log(inputValue2 >> 2)  //-4

2. 常用比较、运算操作  

 
var undefined;
undefined == null; // true
1 == true;   // true
2 == true;   // false
0 == false;  // true
0 == '';     // true
NaN == NaN;  // false
[] == false; // true
[] == ![];   // true

  

  • undefined与null相等,但不恒等(===)
  • 一个是number一个是string时,会尝试将string转换为number
  • 尝试将boolean转换为number,0或1
  • 尝试将Object转换成number或string,取决于另外一个对比量的类型
  • 所以,对于0、空字符串的判断,建议使用 “===” 。“===”会先判断两边的值类型,类型不匹配时为false。

那么问题来了,看下面的代码,输出什么,foo的值为什么?

var foo = "11"+2-"1";
console.log(foo);
console.log(typeof foo);

  执行完后foo的值为111,foo的类型为String

原文地址:https://www.cnblogs.com/teamobaby/p/4114990.html