for循环:
概念:做重复的事情,通常和数字关联
基本结构:for(;;){}(两个分号不可以省略)
一、for循环注意点
- 是否满足条件:(如果不满足,代码一次不执行)
- 是否有结束条件(如果没有,就是一个死循环(无线循环))
- 浏览器15秒还没有反应过来,就会自动崩溃
二、break
- break在for循环中只要break代码被执行for循环以及终止
三、continue
- continue 当次循环continue关键字以后的代码不执行执行下一次循环
var i = 1;
for(i=1;i<=500;i++){
console.log(i);
}
var ps = document.querySelectorAll("p");
for(var i=0;i<ps.length;i++){
ps[i].onclick = function(){
alert(this.innerHTML);
this.classList.toggle("active");//切换active类名
}
}
var ps = document.querySelectorAll("p");
for(var i=0;i<ps.length;i++){
console.log(ps[i].innerHTML);
}
函数:
一、定义函数
- function 名称(){代码}
- 函数就是一块可以重复执行(调用)的代码块
function fun(){
console.log("养羊");
console.log("喂马");
console.log("劈柴");
console.log("射雕");
}
二、调用函数
- 1.在js中直接调用:fun()
- 2.可以html事件属性:<h1 οnclick="fun()">
- 3.dom1级事件注册:btn.onclick = fun
- 4.dom2级事件注册:btn.addEventListener("click",fun)
- 5.函数中调用函数
function fun(){
console.log("养羊");
console.log("喂马");
console.log("劈柴");
console.log("射雕");
}
//js直接调用
fun();
//在dom1事件调用
var btn = document.querySelector("button");
btn.onclick = fun;
三、函数的参数
- 参数列表:函数有个很特殊变量arguments,类似数组的变量存储函数传入参数列表
- 形参可以随意起,保持一致就可以
function say(name){
alert("我中意"+name)
}
say("苹果");
say("小彤");
四、多个参数
function add(a,b){
var sum = 0;
for(var i=a;i<=b;i++){
sum+=i;
}
alert(sum);
}
add(2,5);
五、函数默认参数
function send(name="rose"){
alert(`亲爱的${name},我想死你了`);
}
send("小彤");
send();
send("小花");
send();
六、函数的返回值
- 函数默认返回 undefined
- 用return关键字可以定义函数返回值
- return后面的代码 函数不会执行
function add(a,b){
return a+b;
alert(a+b);
}
var re = add(3,4);
console.log(re);
七、匿名函数
- 没有名字的函数
- 在事件注册:el.onclick = function(){}
- 当做回调函数:list.forEach(function(item){})
- 匿名函数自执行:(function(){...})
- 赋值给变量先声明后执行:var abc =function(){...}
//1.和事件绑定一起
var h1 = document.querySelector("h1");
h1.onclick = function(){
alert("你好");
}
//2.当做回调函数
var ps = document.querySelectorAll("p");
ps.forEach(function(item){
console.log(item.innerText)
});
//3.自执行
(function(){alert("我喜欢你")})()
!function(){alert("我不喜欢你")}()
八、作用域
全局作用域:
- 在js任意地方可以访问
- 在script用var声明的变量
- window的全局属性
- 在任意地方没有用关键字声明的变量也是全局变量
函数作用域:
- 在当前函数,子函数可以访问
- 在当前函数声明的变量
- 函数可以访问其父元素作用域/全局作用域变量在函数外部不能访问函数内部变量
- if,switch,else,for没有作用域
var a =15;
function say(){
var b =5;
function son(){
alert(a+b);
}
son();
}
say();
alert(b);