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 语句,会造成调试的困难增加)