摘要:在中,函數(shù)也是以對象的形式存在的,每個(gè)函數(shù)都是一個(gè)對象。但是,外部函數(shù)卻不能夠訪問定義在內(nèi)部函數(shù)中的變量和函數(shù)。特點(diǎn)局部變量在函數(shù)中定義有共享意義如緩存計(jì)數(shù)器等的局部變量。
Function
函數(shù)是這樣一段JavaScript代碼 它只定義一次 但可能被執(zhí)行或調(diào)用多次,F(xiàn)unction類型是JavaScript提供的引用類型之一 通過Function類型創(chuàng)建Function對象。在JavaScript中,函數(shù)也是以對象的形式存在的,每個(gè)函數(shù)都是一個(gè)Function對象。
定義函數(shù)的三種方法/*1.函數(shù)的聲明方式*/ function fun() { console .log("this is a function"); } fun(); /*2.字面量方式*/ var fn = function () { console.log("this is a function"); } fn(); /*3.創(chuàng)建Function類型的對象(就是一個(gè)函數(shù))*/ var fun3 = new Function ("a","console.log(a)"); fun3(100); /*語法: var 函數(shù)名 = new Function("參數(shù)","函數(shù)體"); */Object與Function
/*1.Object與Function都是自身類型*/ console .log(Object instanceof Object);//true console .log(Function instanceof Function);//true /*2.Object自身是構(gòu)造函數(shù),所有的函數(shù)都是Function類型*/ console .log(Object instanceof Function);true /*3.Function是引用類型,用于創(chuàng)建對象,是對象都是Object類型*/ console .log(Function instanceof Object);Function屬性 apply方法
Function的apply()方法用于調(diào)用一個(gè)函數(shù) 并且接受指定的this值 以及一個(gè)數(shù)組作為參數(shù)
/*定義一個(gè)函數(shù)*/ function fun (value){ console .log("this is "+value); } /*第一種調(diào)用形式,語法結(jié)構(gòu):函數(shù)名稱()*/ fun("10"); /*2.第二種調(diào)用方式*/ /*apply (thisArg,argArry)方法 * 參數(shù) thisArg-this argArry-數(shù)組,作為參數(shù)(實(shí)參的列表) */ fun.apply(null,["tn"]);call方法
Function的call()方法用于調(diào)用一個(gè)函數(shù) 并且接受指定的this值作為參數(shù) 以及參數(shù)列表
/*定義一個(gè)函數(shù)*/ function fun(value){ console .log("this is "+value); } /*1.函數(shù)調(diào)用*/ fun (100); /*2.apply方式調(diào)用*/ fun.apply(null,[100]); /*3.call方法調(diào)用*/ fun.call(null,100); /*語法結(jié)構(gòu):函數(shù)名.call(thisArg,arg1,arg2,...)*/bind方法
語法:
bind(thisArg,arg1,arg2,arg3....)
*作用:用于創(chuàng)建一個(gè)新函數(shù)(成為綁定函數(shù))
參數(shù)
*thisArg-this * arg1,arg2...-表示參數(shù)列表 * 返回值-表示返回新的函數(shù)
function fun (value){ console .log("this is "+ value); } fun("20"); var f = fun.bind(null,50); f();arguments對象
由于JS的函數(shù)中,不存在重載,所以使用arguments對象實(shí)現(xiàn)模擬重載
function add(){ var num= arguments.length; switch(num){ case 2: return arguments[0] + arguments[1]; break; case 3: return arguments[0] + arguments[1] + arguments[2]; break; case 4: return arguments[0] + arguments[1] + arguments[2] + arguments[3]; break; } } console .log(add(0,1)); console .log(add(0,1,2)); console .log(add(0, 1,2,3));函數(shù)的遞歸
調(diào)用自身的函數(shù)被稱之為遞歸函數(shù) 在某種意義上說 遞歸近似于循環(huán) 兩者都有重復(fù)執(zhí)行相同的代碼 并且兩者都需要一個(gè)終止條件以避免無限循環(huán)或者無限遞歸
function fn(v){ console.log(v); if (v >= 10) { return; } // fn(v + 1); arguments.callee(v + 1); } // fn(0); var f = fn; fn = null; f(0); // console.log(f);特殊函數(shù) 匿名函數(shù)
匿名函數(shù)的作用:
1.將匿名函數(shù)作為參數(shù)傳遞給其他函數(shù) -> 回調(diào)函數(shù)
2.將匿名函數(shù)用于執(zhí)行一次性任務(wù) -> 自調(diào)函數(shù)
當(dāng)一個(gè)函數(shù)作為參數(shù)傳遞給另一個(gè)函數(shù)時(shí),作為參數(shù)的函數(shù)被稱之為回調(diào)函數(shù)
var one = function(){ return 1; } function fn(v){ return v(); }
或者是
var result = fn(function(){return 1;}); console.log(result);自調(diào)函數(shù)
所謂自調(diào)函數(shù)就是在定義函數(shù)后自行調(diào)用
/* 自調(diào)函數(shù) - 定義即調(diào)用的函數(shù) * 第一個(gè)小括號 - 用于定義函數(shù) * 第二個(gè)小括號 - 用于調(diào)用函數(shù) */ // 全局作用域 - 生命周期:JavaScript文件從執(zhí)行到執(zhí)行完畢 (function(value){ // 函數(shù)作用域 - 生命周期:從函數(shù)調(diào)用到調(diào)用完畢 console.log("this is " + value); })("function"); // 表達(dá)式語法 (function(value){ // 函數(shù)作用域 - 生命周期:從函數(shù)調(diào)用到調(diào)用完畢 console.log("this is " + value); }("function")); !function(value){ // 函數(shù)作用域 - 生命周期:從函數(shù)調(diào)用到調(diào)用完畢 console.log("this is " + value); }("function"); +function(value){ // 函數(shù)作用域 - 生命周期:從函數(shù)調(diào)用到調(diào)用完畢 console.log("this is " + value); }("function");作為值的函數(shù)
將一個(gè)函數(shù)作為另一個(gè)函數(shù)的結(jié)果進(jìn)行返回,作為結(jié)果返回的函數(shù)稱之為作為值得函數(shù)
var one = function(){ return 100; } function fun(){ var v = 100; return function(){ return v; }; }閉包 概述
JavaScript允許函數(shù)嵌套,并且內(nèi)部函數(shù)可以訪問定義在外部函數(shù)中的所有變量和函數(shù),以及外部函數(shù)能訪問的所有變量和函數(shù)。但是,外部函數(shù)卻不能夠訪問定義在內(nèi)部函數(shù)中的變量和函數(shù)。當(dāng)內(nèi)部函數(shù)以某一種方式被任何一個(gè)外部函數(shù)作用域訪問時(shí),一個(gè)閉包就產(chǎn)生了。閉包就是該函數(shù)能使用函數(shù)外定義的變量。
特點(diǎn)1.局部變量:在函數(shù)中定義有共享意義(如:緩存、計(jì)數(shù)器等)的局部變量。(注意:定義成全局變量會對外造成污染)
2.內(nèi)部函數(shù):在函數(shù)(f)中聲明有內(nèi)嵌函數(shù),內(nèi)嵌函數(shù)(g)對函數(shù)(f)中的局部變量進(jìn)行訪問
3.外部使用:函數(shù)(f)向外返回此內(nèi)嵌函數(shù)(g),外部可以通過此內(nèi)嵌函數(shù)持有并訪問聲明在函數(shù)(f)中的局部變量,而此變量在外部是通過其他途徑無法訪問的
1.提供可共享的局部變量
2.保護(hù)共享的局部變量 提供專門的讀寫變量的函數(shù)
3.避免全局污染
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/108221.html
摘要:第五天到第六天的內(nèi)容沒有記筆記,不好不好。第七天到第八天的學(xué)習(xí)目標(biāo)是學(xué)習(xí)布局的各種方式。主要包含相關(guān)和相關(guān)。定位的元素應(yīng)該在文檔流中的間隙不再存在絕對定位的元素不再存在于正常文檔布局流程中。內(nèi)容較多,請參考學(xué)習(xí)了容器項(xiàng)第五天到第六天的內(nèi)容沒有記筆記,不好不好。 第七天到第八天的學(xué)習(xí)目標(biāo)是:學(xué)習(xí)布局的各種方式。主要包含position相關(guān)和Flexbox相關(guān)。 知識點(diǎn): 1、默認(rèn)情況下,塊級元...
摘要:網(wǎng)上有很多前端的學(xué)習(xí)路徑文章,大多是知識點(diǎn)羅列為主或是資料的匯總,數(shù)據(jù)量讓新人望而卻步。天了解一個(gè)前端框架。也可以關(guān)注微信公眾號曉舟報(bào)告,發(fā)送獲取資料,就能收到下載密碼,網(wǎng)盤地址在最下方,獲取教程和案例的資料。 前言 好的學(xué)習(xí)方法可以事半功倍,好的學(xué)習(xí)路徑可以指明前進(jìn)方向。這篇文章不僅要寫學(xué)習(xí)路徑,還要寫學(xué)習(xí)方法,還要發(fā)資料,干貨滿滿,準(zhǔn)備接招。 網(wǎng)上有很多前端的學(xué)習(xí)路徑文章,大多是知...
摘要:思考三個(gè)方面的技術(shù)實(shí)踐持續(xù)集成驅(qū)動測試開發(fā)和重構(gòu)從領(lǐng)域?qū)娱_始事務(wù)腳本模式最簡單,適合于在關(guān)系數(shù)據(jù)庫之上構(gòu)建領(lǐng)域模型需要非常專業(yè)的技術(shù),還有魚數(shù)據(jù)庫的連接表模塊模式折中,在這類有非常強(qiáng)大記錄集支持的環(huán)境非常合適理論上,可以根據(jù)架構(gòu)來選取工具實(shí) 思考三個(gè)方面的技術(shù)實(shí)踐:持續(xù)集成、驅(qū)動測試開發(fā)和重構(gòu) 1. 從領(lǐng)域?qū)娱_始 1)事務(wù)腳本模式最簡單,適合于在關(guān)系數(shù)據(jù)庫之上構(gòu)建;領(lǐng)域模型需要非常專業(yè)...
摘要:簡介全稱中文為塊級格式化上下文。特征總之記住一句話元素特征表現(xiàn)原則就是內(nèi)部元素?zé)o論怎么翻江倒海,都不會影響外部元素。如何觸發(fā),常見如下的值不為的值為,或。的值不為和需掌握自適應(yīng)模塊布局內(nèi)容很多,具體參考1、BFC簡介 BFC全稱block formatting context,中文為塊級格式化上下文。特征總之記住一句話: BFC元素特征表現(xiàn)原則就是:內(nèi)部元素?zé)o論怎么翻江倒海,都不會影響外部元...
摘要:雖然有了十全的計(jì)劃,但如何高效率去記住上面那么多東西是一個(gè)大問題,看看我是怎么做的。 前言 前一篇文章講述了我在三月份毫無準(zhǔn)備就去面試的后果,一開始心態(tài)真的爆炸,但是又不服氣,一想到每次回來后家人朋友問我面試結(jié)果的期待臉,越覺得必須付出的行動來證明自己了。 面經(jīng)傳送門:一個(gè)1年工作經(jīng)驗(yàn)的PHP程序員是如何被面試官虐的? 下面是我花費(fèi)兩個(gè)星期做的準(zhǔn)備,主要分三部分: 有計(jì)劃——計(jì)劃好...
閱讀 1762·2021-10-12 10:12
閱讀 2530·2021-09-29 09:42
閱讀 2711·2021-09-03 10:28
閱讀 2249·2019-08-30 15:54
閱讀 1153·2019-08-30 15:53
閱讀 1388·2019-08-30 11:26
閱讀 3357·2019-08-30 11:02
閱讀 2134·2019-08-30 11:02