for循环:都在做重复的事情;和数字有关系
- 结构:
for(初始化条件;结束条件;更新条件){
执行语句;
}
//1-50偶数和
var sum = 0;
for (var i = 1; i <= 50; i++) {
if (i % 2 == 0) {
sum += i;
}
}
console.log(sum);
- continue :结束当次循环,后面代码不执行,执行下一次循环
- break :可以终止循环
- for循环遍历数组
var arr = [1,2,3,4,"你好"]
for(var i= 0;i< arr.length;i++){
console.log(arr[i])
}
- for循环遍历节点:输出节点的文本
var ps = document.querySelectorAll("p");
for (var i = 0; i < ps.length; i++) {
console.log(ps[i].innerText);
}
- for循环遍历:给每个p注册事件click,执行click弹出文本
var ps = document.querySelectorAll("p");
for (var i = 0; i < ps.length; i++) {
ps[i].onclick = function() {
alert(this.innerHTML);
this.classList.toggle("active")
}
}
函数:一块可以重复执行的代码,函数可以被多次调用
- 结构:
function(){
要执行的代码;
}
- 函数的执行需要被调用
01:js直接调用
02:html事件属性中调用
03:在dom1事件调用
var btn = document.querySelector("button");
btn.onclick = fun;//不需要括号
04:在dom2级 addEventListener(type,fun)
05:函数中调用函数 function play(){check();}
- 多个参数
//定义函数add,求参数的和
//函数的参数列表 arguments(实参列表),类似于数组的变量,存储函数传入参数列表
function add(){
console.log(arguments,arguments.length,arguments[3]);
var sum = 0;
for(var i= 0;i<arguments.length;i++){
sum += arguments[i];
}
alert(sum);
}
add(1,2,3,4,5)
- 函数的返回值
函数执行完,可以返回一个值,被变量接收;关键字return 可以定义函数执行完的返回值;当函数遇到return,就不再往下执行,退出函数;自定义函数,默认返回undefined
function add(a,b){
return a+b;//函数执行完,返回参数的结果
}
var re = add(2,3);
console.log(re);
- 匿名函数:没有名字的函数
js执行代码前,会把当前作用域的函数和变量提升到最前面,把变量赋值为undefined
//匿名函数执行方式
//01 和事件绑定一起
var h1 = document.querySelector("h1");
h1.onclick = function(){
alert("你好");
}
//02 forEach遍历当作回调函数
var ps = document.querySelectorAll("p");
ps.forEach(function(item){
console.log(item.innerText)
});
//03 自执行
;(function(){alert("新冠肺炎退!退!退!")})()
!function(){alert("新冠肺炎退!退!退!退!")}()
//04 赋值给变量 先声明后执行
var abc = function(){...}
- 变量的作用域:变量可以使用范围
- 全局作用域(少用)
- 函数作用域 函数中声明的变量只能在函数内部访问 函数外部不能访问函数内部变量,函数内部可以访问函数外部(全局)变量,变量可以从内看到外,不可以从外看到内
- 局部作用域
- 在script声明的变量,window属性都是全局作用域
- if,switch,else,for没有作用域