1、函数
1-1、函数的概念
函数是当被调用时执行的可重复使用的代码块
2-2、函数的命名规则
1、有数字,字母,下划线-,美元符号组成
2、不能以数字开头
3、不能是关键字
4、区分大小写
5、驼峰命名法
2-3、函数的调用的俩种方式
1、function fn(){
var sum = 0;
for(var i = 1;i<=100;i++){
sum +=i
}
console.log(sum)
}
fn();
2、<body>
<input type="button" value="点我" onclick="fn()">
</body>
<script>
function fn(){
alert("张三,醒醒吧");
}
</script>
当点击点我按钮式会弹出“张三醒醒吧”,onclick的意思是点击
2、函数定义的俩种格式
2-1、函数声明
function 函数名(){
函数体
}
例子:
function fn(){
var a = Number(prompt("请录入一个数"));
var b = Number(prompt("请录入一个数"));
if(a>b){
alert("最大值:+a");
}else{
alert("最大值:+b");
}
}
fn()
2-2、函数表达式
var fn = function(){
函数体
}
例子:
var fn = function(){
var a = Number(prompt("请录入一个数"));
var b = Number(prompt("请录入一个数"));
alert(a+b);
}
fn()
3、函数参数
形参:自定义函数时,函数括号中定义的变量叫做形参,用来接收实参的。
实参:调用函数的时候,在括号中传入的变量或者值叫做实参,用于传递给形参。
形参就是函数定义时候用的,实参是在函数调用时候用的
例子:
//函数定义时,小括号的参数叫形参
function fn(1,100){
var sum = 0;
for (var i = 1; i<=100; i++){
if(i % 2 ==0){
sum += i;
}
}
console.log(sum)
}
//调用时的参数叫实参,函数调用时就是把实参传给形参
fn();---->打印结果为2550
为什么要有参数?
虽然上面代码可以重复使用,但是只能计算1-100之间的值
如果计算n-m之间所有数的和,应该怎么办?
带参数的函数声明
语法:
function 函数名(形参1,形参2,形参...){
函数体
}
带参数的函数调用
函数名(实参1,实参2,实参3);
函数内部是一个封闭的环境,可以通过参数的方式,把外部的值传递给函数内部,函数调用过程就是把实参传递给形参。
例子:
function fn(m,n){
var sum = 0;
for (var i = m; i<=n; i++){
sum += i;
}
console.log(sum)
}
fn(1,100);
fn(1,1000);
fn(20,50);
4、满5个换行的函数
var num = 0; ----->统计个数的变量
for(var i = 0; i<=100; i++){
if(i%2==0){ ------>计算偶数
document.write(i=" "); ----->每个数之间的空格
num++; ---->是偶数就记一次
if(num%5=0){
document.write("<br>");----->换行
}
}
}
5、打印图形
1、打印五行※※※※※
for(var i = 1;i<=5;i++){ ------>控制行数
for(var j = 1; j<=5;j++){ ------>控制每行的个数
document.write("*");
}
document.write("<br>");
}
打印结果为:
*****
*****
*****
*****
*****
对于for循环嵌套:外层循环控制行数,内层循环控制每行的个数
2、打印三角形
for(var j = 1;j<=9; j++){
for(var i=1; i<=j; i++){
document.write("<*>");
}
document.write("<br>")
}
//j=1---->当j为1时i为1;打印结果为*
//j=2---->当j为2时i为2;打印结果为**
//j=3---->当j为3时i为3;打印结果为***
....
//j=9---->当j为9时i为9;打印结果为*********
6、函数返回值
返回值用法:
function 函数名(形参1,形参2,形参...){ ---->//声明一个带返回值的函数
函数体
return 返回值;
}
var 变量 = 函数名(实参1,实参2, 实参3); ---->//可以通过变量来接受这个返回值
例子:
1、
function getSum(a,b){
return a+b;
}
//待返回值的函数,调用时就是一个值
//既然是值,需要将值设给一个变量
var x = getSum(2,7);
console.log(x)
2、
function getSum(){
var sum = 0;
for(var i = 1;i<=100;i++){
sum+=i;
}
reture sum;
}
var y = getSum();
console.log(y);
7、预解析
7-1、变量的作用域
一段代码的作用范围
例子:
function fn(){
var a = 10;--------->作用域
console.log(a);----->作用域
}
**7-2、预解析过程 **
js解析后执行js代码的时候,分为两个过程:预解析过程和代码执行过程
预解析过程:
把声明部分提升到当前作用域的最前面
然后是代码从上到下的执行过程
7-3、变量提升
定义变量的时候,变量的声明(var )会被提升到当前作用域的最上面,变量的赋值不会提升。
例子:
function fun() {
console.log(num);
var num = 20;
}
fun();
等价于
function fun() {
var num;
console.log(num); //undefined
num = 20;
}
fun();
7-4、arguments length的作用
代表实参的个数