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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

【废弃】【WIP】JavaScript 函数

發(fā)布時間:2025/7/14 javascript 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【废弃】【WIP】JavaScript 函数 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

創(chuàng)建: 2017/10/09
更新: 2017/11/03 加上【wip】

廢棄: 2019/02/19 重構(gòu)此篇。原文歸入廢棄

        ?增加【廢棄中】標(biāo)簽與總體任務(wù)

結(jié)束: 2019/03/12 完成廢棄, 刪除【廢棄中】標(biāo)簽, 添加【廢棄】標(biāo)簽

結(jié)束: 2019/03/03 完成廢棄, 刪除【廢棄中】標(biāo)簽, 添加【廢棄】標(biāo)簽

【TODO】 // TODO: 第9章 關(guān)于函數(shù)的構(gòu)造函數(shù)呼出與call, apply // TODO 8.7 補充即時函數(shù)用途 // TODO: 補充JavaScript編譯過程, p179 // TODO: 8.8及以后
?函數(shù)的定義
?所有聲明不分順序,自動排序
?普通聲明?function test(a) {
??? return a;
?}
?只有這種在定義后在程序任何位置都可以呼出
?函數(shù)字符來定義

?var sample = function(a) {
??? return a;
?}
?呼出: sample(123);

不會被預(yù)處理

?

?Object來定義

?var name = new function("x", "y", ... , "process")

?最后一個是處理,前面都是參數(shù)

?不會被預(yù)處理

?

?箭頭函數(shù)式來定義

?var sample = x => x*x;

?不會被預(yù)處理

??
?嵌套函數(shù)?函數(shù)內(nèi)部的函數(shù)
?位置?函數(shù)內(nèi)部
?只可以在函數(shù)內(nèi)部的"最外側(cè)"(不能在if,for里面)
??同樣聲明上卷,作為函數(shù)內(nèi)部的屬性
??只能從定義的函數(shù)內(nèi)部呼出
??
??
??
??
??
??
??
??
??
?函數(shù)的呼出
?函數(shù)的呼出方法?function sample() {}
?最普通的?sample();
?屬性函數(shù)?object.func_name();
?呼出構(gòu)造函數(shù)?new Object(); // TODO: 第9章
?call, apply?// TODO: 第9章
??
??
??
??
??
??

?即時函數(shù)

?(無名函數(shù))

?定義與呼出同時進行
?
?普通?var f = function() {...};
?f();
?其他寫法?(function() {...}) ();
??(function() {...} ());
??+function() {...} ();
?個人喜歡的寫法

?可以帶名字,只有函數(shù)內(nèi)部可以用該名稱

?

? +function a(args) { a(); } (args);
?用途?構(gòu)造不污染全局空間的命名空間
// TODO 8.7 補充即時函數(shù)用途
??
??
??
??
??
??
??
?函數(shù)的參數(shù)
? 參數(shù)的省略?省略掉的為undefined
?undefined是沒有賦值
?null是賦予的是空值
?不固定長度的參數(shù)?所有函數(shù)內(nèi)部可用arguments
??Arguments Object
?自帶屬性?
?length?參數(shù)數(shù)量
?callee?現(xiàn)在執(zhí)行的函數(shù)
??
??
??
?獲取參數(shù)的方法?arguments[0]
?arguments[1]
?...
?轉(zhuǎn)換成數(shù)組?var params = [].slicce.call(arguments);
?定義無限長的參數(shù)的函數(shù)

?用arguments獲取參數(shù)?

function sample(a) {var result = a;for(var i = 1; i < arguments.length; i++) {s += arguments[i];}return result; }

?

?

??
??
??
??
??
?傳值和傳參?object參數(shù)傳送的是參照(指針)
??
??
??
??
??
??
??
??
??
??
??
??
??
??
??
?遞歸函數(shù)
?三種寫法?
?普通??function sample(...) {
? ? if (...) {
sample(...);
? ? }
?}
?帶一個本地可用名的無名函數(shù)?var sample = function f(...) {
? ? if (...) {
? ? ? ?f(...);
? ? }
?}
?不帶本地名的無名函數(shù)?var sample = function(...) {
? ? if (...) {
? ? ? ?arguments.callee(...);
? ? }
?}
??
??
??
??
??
??
??
??
??
??
??
??
??
??
??
??
??
??
??
?程序的編譯與運行
?生成全局對象?
?解析程序?
?運行程序?
?單線程?
?call對象及本地變量?
?this的值

?被呼出函數(shù)所屬對象

?函數(shù)內(nèi)部函數(shù)的this是全局變量

?命名空間

?

var a = "a"; function f() {var b = "b";function g() {var c = "c";console.log(a+b+c);} } f();

?

?

?垃圾回收

?釋放從全局對象無法到達的量

?不用在意?

??
??
??
??
??
??
??
??
??
??
?閉包
??JavaScript的所有函數(shù)都是閉包
?閉包內(nèi)部可以有函數(shù)(閉包)
?應(yīng)用?
??
??
??
??
??
??
??
??
??
??
??
??
??
??
??
??
?命名空間
??
?用對象管理程序本地代碼?
?用函數(shù)管理?+function () { ... } ();?




??
??
??
??

?

?用對象管理程序本地代碼? var myApp = myApp || {}; myApp.login = ...; myApp.configs = {}; //部分空間內(nèi)部再劃分部分空間

?


?所有東西追加成屬性
?用函數(shù)作為命名空間? (function () {// 程序所有內(nèi)容寫在這里 })();

?

module模式

// 作為即時函數(shù),把module相關(guān)傳遞給指定參數(shù) var Module = Module || {}; (function (_module) {var name = "none"; // 私有變量function getName () { // 私有方法return name;}_module.showName() = function () { // 公共方法 console.log(getName());}})(Module);

?

?

??
??
??
??
??
??
??
??
??
??
??
??
??
??
?作為對象(Object)的函數(shù)
?函數(shù)也是對象

?● 可以代入變量,對象屬性, 數(shù)組元素

?● 可以作為函數(shù)的參數(shù), 返回值

?● 可以有屬性和方法

?● 可以作為不帶名字的字符, 即無名函數(shù) function () {}

?● 可以動態(tài)生成

?函數(shù)的屬性(property)

?

?caller?呼出現(xiàn)在運行的函數(shù)的函數(shù)
?length?參數(shù)表長度
?name?函數(shù)名
?prototype

?prototype對象

?apply()

?指定this和參數(shù)運行函數(shù)

?參數(shù)用數(shù)組指定?

function test(a, b) { ... } test.apply(thisTarget, [a, b]);

?

?call()

?指定this和參數(shù)運行函數(shù)

?參數(shù)以正常函數(shù)呼出形式指定

test.apply(thisTarget, a, b);

?

?bind()

?把函數(shù)的this綁定指定對象, 返回生成的新函數(shù)

function test() { return this.name } var tom = { name: "none" }; var newTest = test.bind(tom);

?

?constructor()?Function constructor的參照
?toString()?把函數(shù)源代碼以String形式返回
??

?

?

?添加自定義屬性? function test() {...} test.newProperty = "sample"; // 和其他對象添加屬性一樣寫法

?

??
??
??
??
??
??
??
??
??
??
??
??
??
?高階函數(shù)
?定義?以函數(shù)為參數(shù)或返回值的函數(shù)
??
??
??
??
??
??
??
??
??
??
??
??
??
??
??
??
??
?回調(diào)函數(shù)
??
??
??
??
??
??
??
??
??
??
??
??
??
??
??
??
??
??
?ES6關(guān)于函數(shù)的擴張
??
??
??
??
??
??
??
??
??
??
??
??
??
??
??
??
??
??

?

轉(zhuǎn)載于:https://www.cnblogs.com/lancgg/p/8281703.html

總結(jié)

以上是生活随笔為你收集整理的【废弃】【WIP】JavaScript 函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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