1.负数二进制存储使用的格式是二进制补码,计算一个数值的二进制补码步骤如下:
(1)取该值的绝对值的二进制(2)取反码(3)反码+1,从而得出补码

2.位操作:
(1)左移<<:左移符号位不变,空位填0补充
(2)有符号右移>>:右移产生的空位以符号位填充,正数0填充、负数1填充
(3)无符号右移>>>:无符号右移将负数得出二进制补码,当成正数进行右移操作

3.逻辑与和逻辑或都为短路操作,逻辑与(逻辑或)第一个操作数为false(true)后面即使会产生错误都不会去检测。

4.Infinity与0相乘,结果为NaN;Infinity与非0数值相乘,结果为Infinity或者-Infinity;
Infinity除以Infinity,结果为NaN;0除以0,结果为NaN;
如果是非零的有限数被零除,则结果是 Infinity 或-Infinity;
总的来说,得出的结果为不可预测的基本都为NaN

5.任何操作数与 NaN 进行关系比较,结果都是 false。

6.由于 ECMAScript 中不存在块级作用域,因此在循环内部定义的变量也可以在外部访问到。

var count = 10;for (var i = 0; i < count; i++){    alert(i);}alert(i); //10

7.for-in 语句是一种精准的迭代语句,可以用来枚举对象的属性

for (var propName in window) {document.write(propName);}

8.label添加标签的用法:

outermost:for (var i=0; i < 10; i++) {    for (var j=0; j < 10; j++) {        if (i == 5 && j == 5) {            break outermost;        }        num++;    }}alert(num); //55

9.with 语句的作用是将代码的作用域设置到一个特定的对象中

var qs = location.search.substring(1);var hostName = location.hostname;var url = location.href;with(location){var qs = search.substring(1);var hostName = hostname;var url = href;}

在 with 语句的代码块内部,每个变量首先被认为是一个局部变量,而如果在局部环境中找不到该变量的定义,就会查询location 对象中是否有同名的属性。如果发现了同名属性, 则以 location 对象属性的值作为变量的值。(实际开发不建议使用with语句,会造成调试的困难增加)