亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

JavaScript 函數總體概述(函數聲明/參數傳遞/返回值/加載/變量和作用域/變量聲明提升/匿名函數/回調函數)

2019-11-06 07:23:52
字體:
來源:轉載
供稿:網友
1. 函數的概念和定義函數就是可以重復執行的代碼塊。① 函數聲明(自定義聲明)使用在定義之前或之后均可
function 函數名(形參) { }② 函數表達式(匿名函數法)注意:使用必須在定義之后
var 變量 = function(形參) { }③ Function對象(構造函數法)注意:使用必須在定義之后
var 變量 = new Function(程序);2. 函數的參數定義:參與運算的變量作用:為了擴展函數的功能性,和與程序員的交互性,和代碼的復用性- 實參:實際參與運算的變量- 形參:形式上參與運算的變量,為實參占位置javaScript中的函數相對于其它語言的函數比較靈(特)活(殊)。在其它語言中實參個數必須和形參個數一致,但是Javascript中沒有函數簽名的概念,實參個數和形參個數可以不相等。JavaScript中沒有方法的重載。① 實參個數 > 形參個數:函數正常執行,多余的參數不參與運算② 實參個數 = 形參個數:函數正常執行③ 實參個數 < 形參個數:未給定值的參數默認為undefined,是報錯還是NaN還是無法執行,取決于函數內部的邏輯
function fn(a,b) {    alert(a+b);    //實參個數和形參個數    console.log(fn.length);//打?。盒螀€數    console.log(arguments); //打印:實參個數,arguments是一個對象(偽數組),裝載著所有的實參,必須在函數內部使用}3. 函數的返回值有return函數就有值,沒有return函數就沒有值。函數內部的變量如果外部想要使用,必須用return關鍵字返回,那么外部的變量才能接收。總結:函數內部,return后面的值就是返回值作用:函數執行后剩下結果就是返回值
alert("你好");//有參數,沒有返回值confirm("你好");//有參數,有返回值,點擊確定返回true,點擊取消返回falsePRompt();//有參數,有返回值,點擊確定返回輸入內容,沒寫內容默認為空字符串,點擊取消返回null總結函數功能- 有時候我們用的是函數的邏輯- 有時候我們用的是函數的返回值- 而函數的參數是為了提高函數的功能性存在的函數的注意事項① 如果函數沒有顯式使用return語句,那么函數有默認的返回值:undefined② 如果函數使用return語句,那么跟在return后面的值,就成了函數的返回值③ 如果函數使用return語句,但是return后面不跟任何值,那么函數的返回值也是undefined④ 函數使用return語句后,這個函數會在執行完return語句之后停止并立即退出,return可以切斷函數,它后面的代碼不會再執行,但代碼也會被加載。⑤ 打印函數名,等于打印整個函數;打印執行函數,等于打印返回值。(函數名+(),就是執行函數)4. 函數名、函數體和函數加載問題① 函數名是什么?函數名 == 整個函數② 函數加載問題JS加載的時候,只加載函數名,不加載函數體。所以如果想使用內部的成員變量,需要調用函數。5. 變量和作用域(函數中的變量需要函數執行之后才能使用)(1)全局變量和局部變量- 任何位置沒有var的都是全局變量(成員變量),或者函數之外用var定義的也是全局變量- 函數內部有var的是局部變量,形參也是局部變量(2)隱式全局變量- 函數內部沒有var的是全局變量
function  fn(){    var  a  =  b  =  c  =  1;   // b和c就是隱式全局變量(等號)    var  a = 1;  b = 2;  c = 3;     // b和c就是隱式全局變量(分號)    var  a = 1 ,  b = 2 ,  c = 3;    // b和c不是隱式全局變量(逗號)}(3)其它- 函數內部可以訪問到該函數所屬的外部作用域的變量(作用域鏈)- 不使用var聲明的變量是全局變量,不推薦使用。- 變量退出作用域之后會銷毀,全局變量關閉網頁或瀏覽器才會銷毀6. 變量聲明提升(出現原因:預解析)就是在頁面加載完畢之后,js執行之前,需要先預覽一遍整體的js代碼,把所有非function內部的變量提升到頁面的最頂端。如果在定義變量之前使用了變量,就會出現變量聲明提升。- 使用變量的時候變量的值為undefined,計算后形成NaN- 變量聲明提升在全局和局部都是會出現的- 對于變量,只提升變量名,不提升變量值- 對于函數,是整體提升的(詳細解析見后續文章)7. 匿名函數定義:沒有命名的函數作用:    ①不需要定義函數名的時候(一般用在綁定事件的時候)      ②書寫起來更簡便調用方法:    ① 直接調用
var fn = function() {}fn();    ② 自調用
(function(){alert(1)})();    ③ 事件綁定    ④ 定時器8. 函數是一種數據類型function9. 回調函數- 簡單理解:就是函數做為參數。- 復雜理解:回調函數就是一個通過函數調用的函數。如果你把函數的指針(地址)作為參數傳遞給另一個函數,當這個指針被用來調用其所指向的函數時,我們就說這是回調函數。
fn(1,2,demo1);//使用函數名就相當于傳遞了整個函數function fn(num1,num2,fun){    var sum = fun(num1,num2);    alert(sum);}function demo1(n,m){    return n+m;}10. 遞歸定義:函數自己調用自己使用:必須有跳出條件(詳細解析見后續文章)11. 閉包定義:函數作為返回值
fn()();//第一個小括號是對fn的調用,調用后會返回一個值,后面的括號是對返回值的調用function fn(){    return function demo(){        alert(50);    }}(詳細解析見后續文章)12. parseInt 和 toString 問題parseInt把任何進制轉換成10進制
十進制值 = parseInt(數值,進制);toString把10進制轉換成任何進制
任何進制值 = 十進制值.toString(進制);13. 參數傳遞問題func(num); //調用函數所謂的調用函數傳參就是將參數中的數據給函數中的參數變量賦值。調用函數的時候:-> 將參數拷貝一份-> 跳轉到函數體-> 進入函數體之前將完成一次賦值,num = 被拷貝的值不嚴謹的描述,參數傳遞就是參數賦值-> 如果傳遞的是值類型:值類型會被拷貝,拷貝的是數據,因此在函數內的變量,與函數外的變量是值相同的兩個不同變量,值類型在函數內修改的變量以后,函數結束后,數據無影響。-> 如果傳遞的是引用類型:引用會被拷貝,拷貝的是地址,而數據還是只有一個,也就是說,函數內與函數外是兩個不同的變量,但是指向同一個對象,無論使用函數內,還是函數外的變量對該對象做操作,都是一樣的,因此在函數內修改對象的成員,函數結束后,修改結果會保持下來。
小知識① 函數不調用不執行② 函數名就等于(整個函數)③ 加載函數的時候,只加載函數名,不加載函數體④ 參數相當于局部變量⑤ 就近原則使用變量⑥ 兩個平級的函數中的變量不會相互影響(可以使用同樣的形參名)


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
啪一啪鲁一鲁2019在线视频| 欧美裸体男粗大视频在线观看| 亚洲国产精品va在看黑人| 中文字幕欧美专区| 国产精品视频公开费视频| 日本成人黄色片| 亚洲美女av在线播放| 成人黄色av网站| 久久久久免费视频| 久久久999成人| 久久91精品国产91久久跳| 欧美日韩成人在线视频| 成人久久18免费网站图片| 18性欧美xxxⅹ性满足| 久久91精品国产91久久久| 亚洲一区二区三区sesese| 亚洲sss综合天堂久久| 国产日韩换脸av一区在线观看| 亚洲精品ady| 欧美黄色片视频| 一区二区三区www| 久久99精品久久久久久噜噜| 性欧美长视频免费观看不卡| 69精品小视频| 成人a在线观看| 91禁外国网站| 668精品在线视频| 久久男人资源视频| 日韩在线小视频| 97国产精品人人爽人人做| 欧美第一黄网免费网站| 欧美日韩一区二区免费在线观看| 亚洲成人激情小说| 欧美激情在线视频二区| 国产精品jizz在线观看麻豆| 亚洲精品欧美日韩专区| 热99精品只有里视频精品| 亚洲va男人天堂| 8090成年在线看片午夜| 国产日韩视频在线观看| 国产精品视频免费在线观看| 国产日产欧美精品| 欧美一级视频一区二区| 成人字幕网zmw| 亚洲国产精品va在看黑人| 精品中文字幕在线观看| 国产精品流白浆视频| 成人日韩在线电影| 国产精品99久久久久久白浆小说| 2018中文字幕一区二区三区| 欧洲成人在线观看| 亲子乱一区二区三区电影| 精品久久久中文| 国内精品久久久| 欧美黄网免费在线观看| 欧美精品一本久久男人的天堂| 欧美成人精品激情在线观看| 综合国产在线观看| 欧美亚洲日本黄色| 国产精品视频xxxx| 亚洲激情视频在线播放| 日韩中文有码在线视频| 粉嫩老牛aⅴ一区二区三区| 欧美日韩国产中文精品字幕自在自线| 国产综合在线看| 国产精品高潮粉嫩av| 91欧美精品成人综合在线观看| 欧美裸体男粗大视频在线观看| 欧美剧在线观看| 欧美国产乱视频| 911国产网站尤物在线观看| 日本亚洲欧洲色α| 精品久久久久久电影| 亚洲欧洲高清在线| 亚洲精品www久久久| 久久久亚洲精品视频| 九九精品在线播放| 国产精品在线看| 在线成人激情视频| 亚洲色图在线观看| 亚洲网站视频福利| 国产精品视频在线播放| 亚洲精品永久免费精品| 国产精品专区一| 欧美激情国产精品| 国内精品久久久久影院优| 亚洲人免费视频| 国产精品成人一区| 亚洲美女在线看| 国产99视频精品免视看7| 欧美激情2020午夜免费观看| 久久视频在线免费观看| 色一情一乱一区二区| 欧美成人精品h版在线观看| 亚洲欧洲一区二区三区久久| 久久久国产精品x99av| 久久久精品一区| 久久精品电影一区二区| 国产精品成人一区| 亚洲精品动漫久久久久| 日韩免费观看视频| 尤物九九久久国产精品的特点| 国产精品嫩草视频| 欧美电影在线播放| 精品久久香蕉国产线看观看gif| 97香蕉久久夜色精品国产| 国产精品老女人精品视频| 国产精品电影久久久久电影网| 欧美日韩午夜激情| 欧美麻豆久久久久久中文| 亚洲肉体裸体xxxx137| 在线观看国产精品淫| 国产精品福利观看| 91精品国产成人| 国产精品久久久久久久电影| 国产精品久久二区| 亚洲va欧美va国产综合剧情| 国产激情久久久| 97超级碰碰人国产在线观看| 国产91色在线播放| 久久久久久久久久久人体| 欧美激情一区二区三区久久久| 久久久精品国产网站| 国产精品人成电影在线观看| 国产精品v日韩精品| 久久久欧美精品| 欧美裸体xxxx| 欧美日韩性视频在线| 日韩亚洲综合在线| 色偷偷亚洲男人天堂| 国产91精品久久久久| 国产有码在线一区二区视频| 精品国产成人在线| 国产精品狼人色视频一区| 91久久久在线| 亚洲理论电影网| 亚洲精品中文字| 国产亚洲精品va在线观看| 国产a∨精品一区二区三区不卡| 粉嫩av一区二区三区免费野| 国产欧美一区二区三区在线| 欧美午夜丰满在线18影院| 国产欧美日韩丝袜精品一区| 欧美激情欧美狂野欧美精品| 91av视频在线播放| 亚洲免费av电影| 一本大道亚洲视频| www.国产精品一二区| 欧美黑人性生活视频| 亚洲精品乱码久久久久久金桔影视| 国产成人精品亚洲精品| 久久99精品视频一区97| 欧美久久精品午夜青青大伊人| 久久免费国产精品1| 韩国视频理论视频久久| 日韩精品视频免费在线观看| 国内成人精品一区| 91精品国产高清久久久久久91| 欧美视频在线免费看| 精品视频—区二区三区免费| 97精品视频在线播放| 中文字幕日韩在线观看| 亚洲精品久久7777777| 久久久爽爽爽美女图片|