日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

函数作为返回值练习 作用域和作用域链及预解析 闭包 闭包小案例

發(fā)布時(shí)間:2024/4/13 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 函数作为返回值练习 作用域和作用域链及预解析 闭包 闭包小案例 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

函數(shù)作為返回值練習(xí)

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Document</title><script>// 排序,每個(gè)文件都有名字,大小,時(shí)間,都可以按照某個(gè)屬性的值進(jìn)行排序// 三部電影,電影有名字,大小,上映大小function File(name,size,time){// 電影名字this.name = name;// 電影大小this.size = size;// 電影的上映時(shí)間this.time = time;}var f1 = new File("jack.avi","400M","1998-08-08");var f2 = new File("tomas.avi","200M","2018-08-08");var f4 = new File("xiao.avi","800M","2010-08-08");var arr = [f1,f2,f4];function fn(attr){ // 函數(shù)作為返回值return function getSort(obj1,obj2){if(obj1[attr]>obj2[attr]){return 1;}else if(obj1[attr]==obj2[attr]){return 0;}else{return -1;}}}// arr.sort(getSort);var ff = fn("time");// 函數(shù)作為參數(shù)arr.sort(ff);for(var i=0;i<arr.length;i++){console.log(arr[i].name+"===="+arr[i].size+"===="+arr[i].time);}</script> </head> <body></body> </html>

作用域和作用域鏈及預(yù)解析

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Document</title><script>// 變量---->局部變量和全局變量// 作用域:就是變量的使用范圍// 局部作用域和全局作用域// js中沒有塊級(jí)作用域----一對(duì)括號(hào)中定義的變量,這個(gè)變量可以在大括號(hào)外面使用// 函數(shù)中定義的變量是局部變量// while(true){// var num = 10;// break;// }// console.log(num);// {// var num2 = 100;// }// console.log(num2);// if(true){// var num4 = 1000;// }// console.log(num4);// function f1(){// // 局部變量// var num = 10;// }// console.log(num);// 作用域鏈:變量的使用,從里向外,層層的搜索,搜索到了就可以直接的使用了// 層層搜索,搜索到0級(jí)作用域的時(shí)候,如果還是沒有找到這個(gè)變量,結(jié)果就是報(bào)錯(cuò)// 作用域 級(jí)別:0// var num = 10;// function f1(){// // 作用域鏈 級(jí)別:1// var num = 20;// function f2(){// // 作用域鏈 級(jí)別:2// var num = 40;// console.log(num);// }// f2();// }// f1();// 預(yù)解析:就是在瀏覽器解析這行代碼之前,把變量的聲明和函數(shù)的聲明提前(提升)// 到該作用域的最上面// 變量提升console.log(num);var num = 100;// 函數(shù)的聲明被提前了f1();function f1(){console.log("這個(gè)函數(shù)執(zhí)行了");}// f2();var f2 = function(){console.log("小蘇好帥哦");};f2();</script> </head> <body></body> </html>

閉包

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Document</title><script>// 閉包/*** 閉包的概念:函數(shù)A中,有一個(gè)函數(shù)B,函數(shù)B中可以訪問函數(shù)A中定義的變量或者是* 數(shù)據(jù),此時(shí)形成了閉包(這句話不嚴(yán)謹(jǐn))* 閉包的模式:函數(shù)模式的閉包,對(duì)象模式的閉包* 閉包的作用:緩存數(shù)據(jù),延長(zhǎng)作用域鏈* 閉包的有點(diǎn)和缺點(diǎn):緩存數(shù)據(jù)* * 閉包的應(yīng)用:*/// 函數(shù)模式的閉包:在一個(gè)函數(shù)中有一個(gè)函數(shù)// function f1(){// var num = 10;// // 函數(shù)的聲明// function f2(){// console.log(num);// }// // 函數(shù)調(diào)用// f2();// }// f1();// 對(duì)象模式的閉包:函數(shù)中有一個(gè)對(duì)象// function f4(){// var num = 10;// var obj = {// age:num// };// console.log(obj.age);// }// f4();// function f1(){// var num = 10;// return function(){// // console.log(num);// return num;// }// }// var ff = f1();// var result = ff();// console.log(result);// function f2(){// var num = 100;// return {// age:num// }// }// var obj = f2();// console.log(obj.age);</script> </head> <body></body> </html>

閉包小案例

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Document</title><script>function f1(){var num = 10;num++;// console.log(num);return num;}console.log(f1());console.log(f1());console.log(f1());// function f1(){// var num = 10;// return function(){// num++;// return num;// }// }// var ff = f1();// console.log(ff());// console.log(ff());// console.log(ff());</script> </head> <body></body> </html>

?

總結(jié)

以上是生活随笔為你收集整理的函数作为返回值练习 作用域和作用域链及预解析 闭包 闭包小案例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。