函數(shù)洪规,也稱之為方法违崇,是完成某個(gè)功能的代碼塊
function 是定義函數(shù)的關(guān)鍵字
函數(shù)分為:1.無(wú)參函數(shù) 2.帶參函數(shù) 3.帶返回值的函數(shù)
1.定義無(wú)參函數(shù)土辩,函數(shù)的()里面沒(méi)有定義參數(shù)遭赂,這樣的函數(shù)就是無(wú)參函數(shù)
? ? ? ? function fun1(){
? ? ? ? ? ? let num1 = 100
? ? ? ? ? ? let num2 = 200
? ? ? ? ? ? console.log(`${num1}+${num2}=${num1+num2}`);? ?
? ? ? ? }
? ? ? ? 函數(shù)必須要調(diào)用后潜索,才會(huì)執(zhí)行里面的代碼
? ? ? ? fun1()? ???//輸出100+200=300
? ? ? ? console.log('----------------------------');
2.定義帶參數(shù)函數(shù)臭增,函數(shù)的()里面需要傳參數(shù),參數(shù)可以傳多個(gè)竹习,參數(shù)名是自定義的
? ? ? ? 函數(shù)在定義時(shí)候誊抛,定義的參數(shù)是:形參
? ? ? ? function fun2(num1,num2){
? ? ? ? ? ? console.log(`${num1}+${num2}=${num1+num2}`);? ??
? ? ? ? }
? ? ? ? 帶有帶參數(shù)的函數(shù)時(shí),傳遞具體的實(shí)際值(函數(shù)在調(diào)用時(shí)整陌,傳遞的參數(shù)是:實(shí)參)
? ? ? ? fun2(100,200)? ??//輸出100+200=300
? ? ? ? fun2(1000,2000)? ??//輸出1000+2000=3000
? ? ? ? fun2(10,20)? ??//輸出10+20=30
? ? ? ? 調(diào)用帶參數(shù)的方法時(shí)拗窃,如果沒(méi)有傳遞參數(shù)瞎领,那么參數(shù)就是值就是undefined
? ? ? ? fun2()? ??//輸出undefined+undefined=NaN
? ? ? ? console.log('----------------------------');
3.帶返回值的函數(shù)
? ? ? ? function fun3(num1,num2){
? ? ? ? ? ? let sum = num1+num2
? ? ? ? ? ? return關(guān)鍵字,只能用的函數(shù)中随夸,用于返回函數(shù)的執(zhí)行結(jié)果
? ? ? ? ? ? return sum;
? ? ? ? }
? ? ? ? 調(diào)用帶返回值的函數(shù)九默,需要通過(guò)變量接收函數(shù)的返回值。
? ? ? ? let sum = fun3(100,200)
? ? ? ? console.log(sum);????//輸出300
定義函數(shù)真正的作用宾毒,其實(shí)就對(duì)代碼進(jìn)行封裝驼修,讓一段代碼可以重復(fù)使用。
1.定義一個(gè)格式化日期的方法
?function formatDate(date){
? ? //獲取年月日诈铛,時(shí)分秒
? ? let year = date.getFullYear()
? ? let month = date.getMonth() + 1
? ? let day = date.getDate()
? ? let hour = date.getHours()
? ? let minute = date.getMinutes()
? ? let second = date.getSeconds()
? ? //將獲取到的時(shí)間信息邪锌,拼接成一個(gè)字符串
? ? let str = [repair0(year), repair0(month), repair0(day)].join('-') +
? ? ' ' + [repair0(hour), repair0(minute), repair0(second)].join(':')
? ? return str
}
2.定義一個(gè)補(bǔ)零的方法
function repair0(num){
? ? return (num+'').length>1 ? num : '0'+num
? ? ? ? //轉(zhuǎn)字符串
}
3.定義一個(gè)對(duì)數(shù)組排序的方法
function mySort(arr){
? ? // 第一層循環(huán),控制每輪選擇的數(shù)
? ? for(let i=0;i<arr.length-1;i++){
? ? ? ? // 第二層循環(huán)癌瘾,控制每輪參與比較的數(shù)(第一輪觅丰,j從1-4;第二輪妨退,j從2-4)
? ? ? ? for(let j=i+1;j<arr.length;j++){
? ? ? ? ? ? //如果選擇的數(shù) 大于 參與比較的數(shù) 就互換
? ? ? ? ? ? if(arr[i] > arr[j]){
? ? ? ? ? ? ? ? let temp = arr[i]
? ? ? ? ? ? ? ? arr[i] = arr[j]
? ? ? ? ? ? ? ? arr[j] = temp
? ? ? ? ? ? }
? ? ? ? }
? ? }
}
<!-- 導(dǎo)入外部js -->
? ? <script src="./js/kai.js"></script>
? ? <script>
? ? ? ? //創(chuàng)建一個(gè)當(dāng)前日期
? ? ? ? let date1 = new Date()
? ? ? ? //創(chuàng)建一個(gè)指定日期
? ? ? ? let date2 = new Date('2020-1-1 12:8:8')
? ? ? ? //根據(jù)時(shí)間戳創(chuàng)建一個(gè)日期對(duì)象
? ? ? ? let date3 = new Date(123234214213)
? ? ? ? console.log(formatDate(date1));? ? //輸出2021-11-26 10:15:21
? ? ? ? console.log(formatDate(date2));? ??//輸出2020-01-01 12:08:08
? ? ? ? console.log(formatDate(date3));? ??//輸出1973-11-27 15:43:34
? ? ? ? console.log('-----------------------------');
? ? ? ? let arr1 = [11,66,33,245,7,99]
? ? ? ? let arr2 = [77,234,5,66,28]
? ? ? ? mySort(arr1)
? ? ? ? mySort(arr2)
? ? ? ? console.log(arr1);? ??//輸出(6)?[7, 11, 33, 66, 99, 245]
? ? ? ? console.log(arr2);? ??//輸出(5)?[5, 28, 66, 77, 234]
手寫(xiě)實(shí)現(xiàn)字符串的函數(shù)
let str = 'abcdefg'
1.獲取一個(gè)字符串指定下標(biāo)的字符
? ? ? ? function charAt(index){
? ? ? ? ? ? return str[index]
? ? ? ? }
? ? ? ? console.log(charAt(3));? ? //輸出d
? ? ? ? console.log('------------------------------');
2.定義一個(gè)函數(shù)妇萄,返回字符串中指定字符第一次出現(xiàn)的位置
? ? ? ? let str2 = "abc你好def你好gwt"
? ? ? ? function indexOf(str){
? ? ? ? ? ? let index = -1; ? ? //定義一個(gè)變量,用于表述字符串的位置
? ? ? ? ? ? //循環(huán)出字符串中所有的字符串
? ? ? ? ? ? for(let i=0;i<str2.length;i++){
? ? ? ? ? ? ? ? if(str2[i]===str){
? ? ? ? ? ? ? ? ? ? //如果相對(duì)咬荷,就返回對(duì)應(yīng)的下標(biāo)
? ? ? ? ? ? ? ? ? ? index = i;
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? return index;
? ? ? ? }
? ? ? ? console.log(indexOf('你'));? ??//輸出3
? ? ? ? console.log(indexOf('好'));? ??//輸出4
? ? ? ? console.log('------------------------------');
3.定義一個(gè)函數(shù):返回字符串中指定字符最后一次出現(xiàn)的位置
? ? ? ? function lastIndexOf(str){
? ? ? ? ? ? let index = -1 ?//定義一個(gè)變量冠句,用于表述字符串的位置
? ? ? ? ? ? //循環(huán)出字符串中所有的字符串
? ? ? ? ? ? for(let i=str2.length-1;i>=0;i--){
? ? ? ? ? ? ? ? //挨個(gè)比較字符串中所有的字符
? ? ? ? ? ? ? ? if(str2[i]===str){
? ? ? ? ? ? ? ? ? ? //如果相對(duì),就返回對(duì)應(yīng)的下標(biāo)
? ? ? ? ? ? ? ? ? ? index = i;
? ? ? ? ? ? ? ? ? ? break
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? return index
? ? ? ? }
? ? ? ? console.log(lastIndexOf('你'));? ??//輸出8
? ? ? ? console.log(lastIndexOf('好'));? ??//輸出9
? ? ? ? console.log('-----------------------------');
4.定義一個(gè)函數(shù):用于截取指定區(qū)間范圍內(nèi)的字符串幸乒,如果只傳一個(gè)參數(shù)懦底,從起始位置往后全部截取
? ? ? ? let str3 = 'abcdefghijklmn'
? ? ? ? function substring(index1,index2){
? ? ? ? ? ? let sum = ''; ? //定義一個(gè)變量,用于保存截取的結(jié)果
? ? ? ? ? ?//如果index2沒(méi)有值罕扎,截取到最后
? ? ? ? ? ? if(index2==null){
? ? ? ? ? ? ? ? for(let i=index1;i<str3.length;i++){
? ? ? ? ? ? ? ? sum+=str3[i];
? ? ? ? ? ? }
? ? ? ? ? ? }else{
? ? ? ? ? ? ? ? //確定循環(huán)的范圍
? ? ? ? ? ? ? ? for(let i=index1;i<index2;i++){
? ? ? ? ? ? ? ? ? ? sum+=str3[i];
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? return sum;
? ? ? ? }
? ? ? ? console.log(substring(3,7));? ??//輸出defg
? ? ? ? console.log(substring(3));? ??//輸出defghijklmn
? ? ? ? console.log('------------------------------');
5.定義一個(gè)函數(shù):用于截取指定長(zhǎng)度的字符串聚唐,第一個(gè)參數(shù)是位置,第二個(gè)參數(shù)是長(zhǎng)度
? ? ? ? function substr(index,len){
? ? ? ? ? ? let sum = ''; ? //定義一個(gè)變量腔召,用于保存截取的結(jié)果
? ? ? ? ? ? //如果len是空杆查,那么就從起始位置到最后全部截取
? ? ? ? ? ? if(!len){
? ? ? ? ? ? ? ? for(let i=index;i<str3.length;i++){
? ? ? ? ? ? ? ? sum+=str3[i];
? ? ? ? ? ? }
? ? ? ? ? ? }else{
? ? ? ? ? ? ? ? for(let i=index;i<index+len;i++){
? ? ? ? ? ? ? ? ? ? sum+=str3[i];
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? return sum;
? ? ? ? }
? ? ? ? console.log(substr(3,7));? ??//輸出defghij
? ? ? ? console.log(substr(3));? ??//輸出defghijklmn
手寫(xiě)實(shí)現(xiàn)數(shù)組的函數(shù)
1.手寫(xiě)一個(gè)數(shù)組函數(shù),用于從數(shù)組中檢查指定的數(shù)據(jù)是否存在臀蛛,存在返回true亲桦,不存在返回false
? ? ? ? let arr1 = [11, 22, 33, 44, 55]
? ? ? ? function includes(val) {
? ? ? ? ? ? let isFind = false; //定義一個(gè)變量,用于表示是否找到
? ? ? ? ? ? //循環(huán)數(shù)組
? ? ? ? ? ? for (let i = 0; i <= arr1.length; i++) {
? ? ? ? ? ? ? ? //判斷數(shù)組中的每一個(gè)元素
? ? ? ? ? ? ? ? if (arr1[i] == val) {
? ? ? ? ? ? ? ? ? ? isFind = true;
? ? ? ? ? ? ? ? ? ? break; ?//加上這個(gè)break浊仆,可以提高性能
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? return isFind;
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? console.log(includes(33));? ? //輸出true
? ? ? ? console.log(includes(88));? ? //輸出false
? ? ? ? console.log('----------------------');
2.手寫(xiě)一個(gè)數(shù)組函數(shù):用于將一個(gè)數(shù)組根據(jù)某個(gè)字符串拼接成字符串客峭,該方法不傳參數(shù),默認(rèn)是根據(jù)逗號(hào)拼接
? ? ? ? function join(str) {
? ? ? ? ? ? let sum = '' ? ?//定義一個(gè)字符串抡柿,用于拼接
? ? ? ? ? ? //如果str是空舔琅,賦值為逗號(hào)
? ? ? ? ? ? if (str == null) {
? ? ? ? ? ? ? ? for (let i = 0; i < arr1.length - 1; i++) {
? ? ? ? ? ? ? ? ? ? sum += arr1[i] + ','
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? sum += arr1[arr1.length - 1]
? ? ? ? ? ? ? ? return sum;
? ? ? ? ? ? } else {
? ? ? ? ? ? ? ? //拼接數(shù)組最后一位前面的所有數(shù)據(jù)
? ? ? ? ? ? ? ? for (let i = 0; i < arr1.length - 1; i++) {
? ? ? ? ? ? ? ? ? ? sum += arr1[i] + str
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? //最后再拼接數(shù)組的最后一位
? ? ? ? ? ? ? ? sum += arr1[arr1.length - 1]
? ? ? ? ? ? ? ? return sum;
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? console.log(join('你好'));? ???//輸出11你好22你好33你好44你好55
? ? ? ? console.log(join());? ???//輸出11,22,33,44,55
? ? ? ? console.log('-------------------------');
3.手寫(xiě)push
? ? ? ? function push(val) {
? ? ? ? ? ? //增加一個(gè)數(shù)組空間,存儲(chǔ)數(shù)據(jù)
? ? ? ? ? ? arr1[arr1.length] = val
? ? ? ? }
? ? ? ? push(66)
? ? ? ? console.log(arr1);? ???//輸出(6)?[11, 22, 33, 44, 55, 66]
? ? ? ? push(77)
? ? ? ? console.log(arr1);? ???//輸出(7)?[11, 22, 33, 44, 55, 66, 77]
? ? ? ? console.log('-------------------------');
4.手寫(xiě)pop
? ? ? ? function pop() {
? ? ? ? ? ? //重新設(shè)置數(shù)組的長(zhǎng)度沙绝,會(huì)去掉最新長(zhǎng)度后面的元素搏明。
? ? ? ? ? ? arr1.length = arr1.length - 1
? ? ? ? }
? ? ? ? pop()
? ? ? ? console.log(arr1);? ???//輸出(6)?[11, 22, 33, 44, 55, 66]
? ? ? ? console.log('-------------------------');
5.手寫(xiě)unshift
? ? ? ? function unshift(str) {
? ? ? ? ? ? let strs = []
? ? ? ? ? ? strs[0] = str
? ? ? ? ? ? for (let i = 1; i <= arr1.length; i++) {
? ? ? ? ? ? ? ? strs[i] = arr1[i - 1]
? ? ? ? ? ? }
? ? ? ? ? ? return strs;
? ? ? ? }
? ? ? ? console.log(unshift(33));? ???//輸出(7)?[33, 11, 22, 33, 44, 55, 66]
6.手寫(xiě)shift
? ? ? ? function shift(arr) {
? ? ? ? ? ? let strs = []
? ? ? ? ? ? for (let i = 0; i < arr.length - 1; i++) {
? ? ? ? ? ? ? ? strs[i] = arr[i + 1]
? ? ? ? ? ? }
? ? ? ? ? ? return strs;
? ? ? ? }
? ? ? ? console.log(shift(arr1));? ???//輸出(5)?[22, 33, 44, 55, 66]
7.手寫(xiě)reverse
方法一:
? ? ? ? function reverse() {
? ? ? ? ? ? let strs = [];
? ? ? ? ? ? let len = arr1.length;
? ? ? ? ? ? for (let j = 0; j < len; j++) {
? ? ? ? ? ? ? ? for (let i = len - 1; i >= j; i--) {
? ? ? ? ? ? ? ? ? ? strs[j] = arr1[i];
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? return strs;
? ? ? ? }
? ? ? ? console.log(reverse());? ???//輸出(6)?[11, 22, 33, 44, 55, 66]
方法二:
? ? ? ? /* function reverse() {
? ? ? ? ? ? //算出比較的次數(shù)(6個(gè)數(shù)比較3次鼠锈,7個(gè)數(shù)也是比較3次)
? ? ? ? ? ? let count = Math.floor(arr1.length / 2)
? ? ? ? ? ? //循環(huán)比較的次數(shù)
? ? ? ? ? ? for (let i = 0; i < count; i++) {
? ? ? ? ? ? ? ? //將前面的數(shù)闪檬,通過(guò)一個(gè)中間變量保存
? ? ? ? ? ? ? ? let temp = arr1[i]
? ? ? ? ? ? ? ? //將后面的數(shù)賦值給前面的數(shù)
? ? ? ? ? ? ? ? arr1[i] = arr1[arr1.length - 1 - i]
? ? ? ? ? ? ? ? //再將中間變量的值星著,賦給后面的數(shù)
? ? ? ? ? ? ? ? arr1[arr1.length - 1 - i] = temp
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? reverse()
? ? ? ? console.log(arr1); */
定義函數(shù)的三種方式
1.第一種方式:通過(guò)function關(guān)鍵字直接定義
? ? ? ? function fun1(){
? ? ? ? ? ? console.log('我是方法一');
? ? ? ? }
? ? ? ? fun1()? ? ? ? //輸出我是方法一
2.第二種方式:定義一個(gè)變量,接收定義的函數(shù)
? ? ? ? let fun2 = function(){
? ? ? ? ? ? console.log('我是方法二');
? ? ? ? }
? ? ? ? fun2();????????//輸出我是方法二
3.第三種方式:箭頭函數(shù)粗悯,其實(shí)就是第二種方式的簡(jiǎn)寫(xiě)虚循。(ES6新推出的一種方式)
? ? ? ? let fun3 = ()=>{
? ? ? ? ? ? console.log('我是方法三');
? ? ? ? }
? ? ? ? fun3()????????//輸出我是方法三
? ? ? ? console.log('---------------------');
? ? ? ? /* let fun4 = (num1,num2)=>{
? ? ? ? ? ? return num1 + num2
? ? ? ? } */
4.如果箭頭函數(shù)的函數(shù)體,只有一條語(yǔ)句样傍,可以省略大括號(hào)横缔,如果這一條語(yǔ)句還是返回語(yǔ)句,return關(guān)鍵字必須省略
? ? ? ? let fun4 = (num1,num2)=>num1 + num2
? ? ? ? console.log(fun4(100,200));????????//輸出300
? ? ? ? let fun5 = (num1,num2)=>console.log(`${num1}+${num2}=${num1+num2}`);
? ? ? ? fun5(100,200)????????//輸出100+200=300
5.如果箭頭函數(shù)的參數(shù)衫哥,只有一個(gè)茎刚,那么可以省略小括號(hào)
? ? ? ? let fun6 = num=>console.log(num*3);
? ? ? ? fun6(100)????????//輸出300
6.如果箭頭函數(shù)沒(méi)有參數(shù),通常要保留小括號(hào)撤逢,如果非要去掉小括號(hào)膛锭,需要寫(xiě)一個(gè)下劃線占一個(gè)位置
? ? ? ? let fun7 = _=>console.log('我是箭頭函數(shù)')
? ? ? ? fun7()????????//輸出我是箭頭函數(shù)
定義幾個(gè)工具方法
1.判斷是否是閏年的方法
? ? ? ? let isLeapYear = year => year % 4 === 0 && year % 100 !== 0 || year % 400 === 0
2. 對(duì)個(gè)位數(shù)字補(bǔ)零的方法
? ? ? ? let repair0 = val => val < 10 ? '0' + val : val
3.返回一個(gè)日期的短日期格式方法
? ? ? ? let miniDate = (date, type) => {
????????let year = date.getFullYear(); //年
????????let month = date.getMonth() + 1; //月
????????let day = date.getDate(); //日
????????let hour = date.getHours(); //時(shí)
????????let minute = date.getMinutes(); //分
????????let second = date.getSeconds(); //秒
????????let week = date.getDay(); //周幾
4.定義一個(gè)返回值,默認(rèn)拼接:年蚊荣,月初狰,日
? ? ? ? let ret = [repair0(year), repair0(month), repair0(day)].join("-");
? ? ? ? if (type == "1") {
? ? ? ? ? ? ret += " " + [repair0(hour), repair0(minute), repair0(second)].join(":");
? ? ? ? } else if (type == "2") {
? ? ? ? ? ? ret +=
? ? ? ? ? ? ? ? " " +
? ? ? ? ? ? ? ? [repair0(hour), repair0(minute), repair0(second)].join(":") +
? ? ? ? ? ? ? ? " 星期" +
? ? ? ? ? ? ? ? "日一二三四五六"[week];
????????}
? ? ? ? return ret;
????????};
5.對(duì)字符串反轉(zhuǎn)的方法
? ? ? ? let reverseStr = str => str.split('').reverse().join('');
? ? ? ? console.log(isLeapYear(2000));? ? //輸出true
? ? ? ? console.log(isLeapYear(2003));? ??//輸出false
? ? ? ? console.log('------------------------');
? ? ? ? console.log(repair0(15));? ??//輸出15
? ? ? ? console.log(repair0(5));? ??//輸出05
? ? ? ? console.log('------------------------');
? ? ? ? console.log(miniDate(new Date()));? ??//輸出2021-11-26
? ? ? ? console.log(miniDate(new Date(), '1'));? ??//輸出2021-11-26 11:36:56
? ? ? ? console.log(miniDate(new Date(), '2'));? ??//輸出2021-11-26 11:36:56 星期五
? ? ? ? console.log('------------------------');
? ? ? ? console.log(reverseStr('abcdefg'));? ??//輸出gfedcba
遞歸方法
什么是遞歸方法:就是一個(gè)方法,自己調(diào)用自己
? ? ? ? // 注意:遞歸方法互例,一定要控制好何時(shí)跳出奢入,否則就是死循環(huán)
? ? ? ? // 經(jīng)典面試題:使用遞歸算法1-20之間所有數(shù)之和
? ? ? ? function calc(num){
? ? ? ? ? ? //這個(gè)if是退出遞歸的條件
? ? ? ? ? ? if(num===1) {
? ? ? ? ? ? ? ? return num
? ? ? ? ? ? }
? ? ? ? ? ? return num + calc(num-1)
? ? ? ? }
? ? ? ? console.log(calc(1));? ? //輸出1
? ? ? ? console.log(calc(2));????//輸出3
? ? ? ? console.log(calc(3));????//輸出6
? ? ? ? console.log(calc(20));????//輸出210
遞歸方法的實(shí)際應(yīng)用
實(shí)現(xiàn)系統(tǒng)菜單
方法一:用循環(huán)
? ? ? ? function fun1(){
? ? ? ? ? ? let menu = 0
? ? ? ? ? ? do{
? ? ? ? ? ? ? ? menu = parseInt(prompt('1.添加 2.修改 3.刪除 4.查詢 0.退出'))
? ? ? ? ? ? ? ? switch(menu){
? ? ? ? ? ? ? ? ? ? case 1:
? ? ? ? ? ? ? ? ? ? ? ? alert('執(zhí)行添加')
? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? case 2:
? ? ? ? ? ? ? ? ? ? ? ? alert('執(zhí)行修改')
? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? case 3:
? ? ? ? ? ? ? ? ? ? ? ? alert('執(zhí)行刪除')
? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? case 4:
? ? ? ? ? ? ? ? ? ? ? ? alert('執(zhí)行查詢')
? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? default:
? ? ? ? ? ? ? ? ? ? ? ? alert('歡迎下次繼續(xù)使用');
? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }while(menu!==0)
? ? ? ? }
? ? ? ? // fun1()
方法二:用遞歸
? ? ? ? function fun2(){
? ? ? ? ? ? let menu = parseInt(prompt('1.添加 2.修改 3.刪除 4.查詢 0.退出'))
? ? ? ? ? ? switch(menu){
? ? ? ? ? ? ? ? case 1:
? ? ? ? ? ? ? ? ? ? alert('執(zhí)行添加')
? ? ? ? ? ? ? ? ? ? fun2()??? ? //在方法內(nèi)部,又重新調(diào)用自己
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? case 2:
? ? ? ? ? ? ? ? ? ? alert('執(zhí)行修改')
? ? ? ? ? ? ? ? ? ? fun2()
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? case 3:
? ? ? ? ? ? ? ? ? ? alert('執(zhí)行刪除')
? ? ? ? ? ? ? ? ? ? fun2()
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? case 4:
? ? ? ? ? ? ? ? ? ? alert('執(zhí)行查詢')
? ? ? ? ? ? ? ? ? ? fun2()
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? default:
? ? ? ? ? ? ? ? ? ? alert('歡迎下次繼續(xù)使用');
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? fun2()