1、for( i = 0 ; i < a.length ; a[i++] = 0 ) ; /*初始化一个数组,而for循环是至少包含一条语句的,因为,在这就使用分号来表示一条语句*/
2、var声明的变量是无法通过delete删除的,初始值都为undefined , 多次声明同一个变量是无所谓的。
3、变量如果等于null、undefined、false、0、“”、NaN;都可以用if(变量)来判断。
4、把o的所有属性对象复制到数组中
var o = {x:1,y:2,z:3};
var a = [] , i = 0;
for(a[i++] in o);
5、当希望通过break来跳出非就近的循环体或switch语句时,就要用到带有标签的break语句。
Code:
var matrix = getDate();/*获得一个二维数组*/
var sum = 0, success = false;
compute_sum: if (matrix) {
for (var x = 0; x < matrix.length; x++) {
var row = matrix[x];
if (!row) break compute_sum;
for (var y = 0; y < row.length; y++) {
var cell = row[y];
if (isNaN(cell)) break compute_sum;
sum += cell;
}
}
success = true;
}
6、局部变量let
let x = 1 , y = 2;
let(x=x+1 , y = x + 2){
alert(x+y); //输出5
};
alert(x+y); //输出3
7、结构赋值 : 解构赋值时,右侧的数组和对象中的一个或多个值就会被提取出来(解构),并赋值给左侧相应的变量名。
当函数返回一组结果的时候,解构赋值就显的非常有用了。
let [x,y] = [1,2];
[x,y] = [x+1,y+1]; //x = 2 , y = 3
[x,y] = [y,x]; //交换了一下
alert([x,y]); //输出[3,2]
8、URL中的JavaScript:在URL后面跟一个javascript:协议限定符,
<a href="javacsript:new Date().toLocaleTimeString();">
what time is it?
</a>//这会跳转到新的页面显示
<pre name="code" class="javascript"><a href="javacsript:alert(new Date().toLocaleTimeString());">
what time is it?
</a>//因为alert的返回值为undefined,所以不会跳转页面; onclick事件通过button来处理比较合适,a标签通常应该保留为超链接。
---------------04-09/2015
1、匿名函数,被创建后,立即调用。
匿名函数的变量和方法的作用域仅在函数内,若要使用匿名函数的变量和方法,使用全局变量吧。
2、全局作用域
由于window对象同时扮演着ECMAScript中Global对象的角色,因此所有在全局作用域中生命的变量、函数都会成为window对象的属性和方法。
var age = 29;
function sayAge(){
alert(this.age);
}
alert(window.age);//29
window.sayAge();//29
全局变量不能通过delete删除,直接在window对象上的定义的属性可以。
var age = 29;window.color = "red";
delete window.age;//Err
delete window.color;//true
访问未声明的变量会抛出错误,但是通过查询window对象,可以知道某个可能未声明的变量是否存在。
var newVlalue = oldValue; //报错,因为未定义
var newValue = window.oldValue;//不会报错,因为这试一次属性查询。