1.delete运算符是用来删除一个对象的 属性,但有一点需要注意:使用var声明的变量虽为全局变量,单不是全局对象的属性,不可以用delete删除,而不用var直接声明的全局变量而直接赋值的为全局对象的属性,是可以用delete删除的;
2.用{}括起来形成语句块,
(1)语句块的结尾不需要分号,但语句块中的原始语句必须以分号结尾
注意:定义一个对象是需要;结尾的
var obj = {x: 1, y: 2, z: 3};
(2)js中没有块级作用域,所以在语句块中声明的变量并不是语句块私有的
注意:函数声明的{}为块级作用域,在其中用var声明的变量为该函数{}内私有的
{ var a = 10; } console.log(a); // 10
function ret() { var a = 10; } ret(); console.log(a); // a is not defined
3.善用空循环,有时妙用空循环是很好用的
var arr = new Array(7); var len = arr.length; for(var i = 0; i < len; arr[i++] = 0); console.log(arr); //[0, 0, 0, 0, 0, 0, 0]
4.switch 中的case匹配操作是'==='比较,而不是'=='比较,所以case匹配不会做任何类型转换
5.for-in 循环用来遍历对象的属性
for(var prop in obj) {}
在for-in语句中 ,js解释器会先计算obj,如果obj为null或者undefined,js解释器 会跳过循环并执行后续代码;如果表达式为一个原始值,这个原始值将被转换为与之对应的包装对象;如果obj为对象,js解释器会依次枚举对象的属性来执行循环,注意:每次循环之前,js会首先计算prop的值,将obj当前遍历的属性名赋值给prop
var obj = {x: 1, y: 2, z: 3}; var arr = [], i = 0; for (arr[i++] in obj); console.log(arr); // ["x", "y", "z"]