<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>函数</title>
<style type="text/css">
div {
width: 100px;
height: 100px;
border: 1px solid;
}
</style>
</head>
<body>
<div class="d"></div>
<div class="d"></div>
<script type="text/javascript">
/*
* 函数(function)
函数是具有特定功能的代码块.
函数的特点:
1.把代码封装起来,方便以后重复使用;
2.函数定义时,函数里的代码不会执行,只有调用该函数,函数里的代码才会执行;
3.使用函数封装起来的代码具有重复性.
函数分为两部分:
1.函数的定义
2.函数的调用
函数的语法结构:
function 函数名(参数1,参数2,参数3...){
语句;
return 返回值;
}
定义的函数里,语句可以有多条,但是return语句只允许存在一条,而且必须写在最后.
调用函数的语法结构:
函数名();
*/
/*
* 函数按照有没有参数,返回值分为四大类:
* 1.无参无返
* 2.无参有返
* 3.有参无返
* 4.有参有返
*/
//1.无参无返
// function buyBeer() {
// console.log("没钱");
// }
//调用函数
// buyBeer();
//2.无参有返
function buyTea() {
console.log("没买到,但我捡了10块钱,给你~");
return("10块钱");
}
// var m = buyTea();
// console.log(m);
//如果函数有返回值在调用时需要用 变量 去接收函数调用后的返回值.
/*
* return在函数里的作用:
* 1.将函数的最终计算结果返回给外界.
* 2.return之后的代码不会执行.
*/
// var num = [];
// function max(num){
// if(var i = 0;i < arr.length; i++){
// m = m > num[i] ? m : num[i]
// return m
// }
// }
// var max = max(1, 2, 3)
// alert(max);
//有参无返 如果有参数,在定义函数时,直接写参数名即可,如果有多个参数,参数与参数之间用逗号隔开.
function buyFruit(money, car) {
console.log("这是" + money + "块钱", "这是" + car);
}
// var a = 10;
// buyFruit(a + 1, "28大杠")
//有参有返
function buyApple(money, count) {
console.log("买了" + count + "斤��," + "还剩" + (money - count * 2) + "块钱");
return money - count * 2;
}
// var m = buyApple(20, 6)
// console.log(m);
/*
* 形参--形式参数,在函数调用时的参数,没有确定的值,
* 实参--实际参数,函数调用时的参数,有确定的值.
* 在函数调用时,实参的值会传递给形参.
*/
//练习1 写一个生成随机数的函数
// function randomNum(m, n){
//
// return Math.floor(Math.random()* (n - m + 1) + m);
// }
var x =randomNum(0, 10);
console.log(x);
// //生成随机色的函数
// function randomColor(){
// var red = randomNum(0, 255);
// var green = randomNum(0, 255);
// var blue = randomNum(0, 255);
// return "rgb(" + red + "," + green + "," + blue + ")";
//
// }
//
// var divs = document.getElementsByClassName("d");
// for(i = 0; i <3; i++){
// divs[i].style.background = randomColor()
// }
//练习2 写一个求三个数中间的函数
function mid(x, y, z) {
var max
var min
var mid
max = Math.max(x, y, z)
min = Math.min(x, y, z)
mid = x + y + z - min - max
return mid;
}
// var x = mid(9,8,10)
// alert(x);
function mid_1(x, y, z) {
var mid;
mid = x > y ? (y > z ? y : (x > z ? z : x)) : (x > z ? x : (y < z ? y : z))
return mid;
}
// var x = mid_1(9,8,10)
//两个数最大值
function twoMax(a, b) {
return a > b ? a : b;
}
//三个数最大值
function threeMax(a, b, c) {
return twoMax(twoMax(a, b), c)
}
// threeMax(1, 2, 3);
function fourMax(a, b, c, d) {
// return twoMax(twoMax(a, b), twoMax(c, d));
return twoMax(threeMax(a, b, c), d)
}
// var c = twoMax(twoMax(twoMax(1, 2), twoMax(3, 4)), 5)
// alert(c)
/*
* 变量的作用域
* 1.js没有块级作用域
* 2.js里有的是函数作用域
*
*/
/*
* 全局变量:定义在函数外面的变量
* 局部变量:定义在函数内部的变量
*
* 1.在函数内部,可以访问外部定义的全局变量,也可以访问内部定义的局部变量
* 2.在函数外部,只可以访问全局变量.
* 3.当全局变量与局部变量重名时,以局部变量为准
*/
//
// function text() {
// var a = 10;
// }
// console.log(a)
//
// var b = 10;
//
// function text1() {
// console.log(b)
// }
//
var c = 10;
function text2() {
var c = 20;
console.log(c)
}
text2()
/*
* 变量的生命周期:变量在内存中存在的时间长短
* 1.全局变量的生命周期,直到页面关闭之前都存在,页面关闭之后被删除.
* 2.局部变量的生命周期,在函数运行期间存在,函数运行结束之后被删除.
*/
/*
* 匿名函数
*/
// (function(name){
alert("名字是" + name);
// })("哈哈");
//
// var a = function(name){
alert("名字是" + name)
// }
// a("