JavaScript-Day4
一、其它的循环结构
1.for…in
对象没有索引也没有length属性,所以经常使用for…in来遍历对象
//用法:
for(var i in 对象){ //i 是要遍历的对象的属性
循环体;
}
注意:若对象的属性是一个变量,则不能使用 对象.属性名的形式取值,应该使用 对象[属性名]
2.while和do…while
//语法:
while(条件){
循环体;
}
//
do{
循环体;
}while(条件);
while循环时先进行条件判断,在执行循环体
do…while是先执行一次循环体,再进行判断
// var i=0;
// do{
// console.log('hello world');
// i++;
// }while(i>3);
var i=0;
do{
console.log('你好');
i++;
}while(i<3);
var j=0;
while(j<3){
console.log('hello world');
j++;
}
二、this
this是对象
this在不同的位置,不同的结果
- 在函数外,this指向window对象
- 在函数内,this的指向不固定(this指向调用者,谁调用我,就指向谁)
- 在事件函数内,this指向事件的触发者
三、自定义属性
在开发中经常会为DOM节点对象来新增属性,保存于该节点相关的一些内容
var bs = document.getElementsByTagName('button');
for (var i = 0; i < bs.length; i++) {
bs[i].index = i;//为每一个按钮添加自定义属性index,保存自身的位置
// bs[0].index=0 bs[1].index=1 bs[2].index=2
bs[i].tag = "我是第" + i + "个";
bs[i].onclick = function () {
// console.log(i);//i
console.log(this.index);
console.log(this.tag);
};
}
四、函数
函数是一种封装,封装的目的是为了复用,封装完毕之后,可以在任意地方,调用任意多次。
function 函数名(){
函数体;
}
函数不会自动执行,需要调用才可以执行(函数的定义顺序与调用顺序无关
函数名();
1.函数的常见用途:
- 封装
- 事件函数
- 对象的方法
2.函数的参数
形参:函数定义时的参数
实参:函数调用时的参数
理论上函数可以有无限多个参数,多个参数之间使用逗号分隔。
函数的参数是按照顺序传递的
3.arguments
每一个函数都有arguments属性
arguments是一个集合
arguments中存储的是接收的参数(实参)
//用函数实现求数字多和
function getSum(){
// console.log(arguments);
var sum=0;
for(var i=0;i<arguments.length;i++){
sum+=arguments[i];
}
console.log(sum);
}
getSum(10,20,30,40);
getSum(10,20);
getSum(10,20,100);